16鋼構造体

17919 ワード

16.構造体


16-1. 構造体の定義と宣言


複数の変数を組み合わせてオブジェクトを表す場合に使用します.
構造体名{
       資料型1変数名1;
       資料型2変数名2;
...
};
struct Student {
	char studentId[10];
    char name[10];
    int grade;
    char major[100];
}

16-2. 構造変数の近似


構造内の変数にアクセスすると、温度(.)使用します.
struct Student {
	char studentId[10];
    char name[10];
    int grade;
    char major[100];
}

struct Student s;
strcpy(s.studentId,"21221014");
strcpy(s.name,"이승희");
s.grade = 4;
strcpy(s.major,"기계공학과");

出力構造体の内容

struct Student{
	char studentId[10];
    char name[10];
    int grade;
    char major[100];
};

int main(void){
	struct Student s;
    strcpy(s.studentId,"21221014");
    strcpy(s.name,"이승희");
    strcpy(s.major,"기계공학과");
    s.grade =4;
    
    //구조체 내용 출력하기
    printf("학번: %s\n",s.studentId);
    printf("이름: %s\n",s.name);
    printf("학년: %d\n",s.grade);
    printf("학과: %s\n",s.major);
    system("pause");
    return 0;
}
struct Student sはsという構造体変数を発表した.
strcpyは、s.grade=4";などの文字列が宣言できないため、関数です.
構造体を宣言する.💥' ; '💥 くっつく.

構造体変数を使用する場合

struct Student{
	char studentId[10];
    char name[10];
    int grade;
    char major[100]
} s;
これにより、sというstudent構造体変数が宣言されます.このようにmain関数以外でもグローバル変数として使用できます.このように書く場合、通常は学生構造体が1つの変数しかない場合です.

構造体の初期化

  • 1を使用する関数で
  • を初期化する.
    int main(void){
    	struct Student s = {"21221014","이승희",4,"기계공학과"};
        }
    1つの構造体変数
  • 2のみが宣言する場合、宣言と同時に
  • が初期化される.
    struct Student{
    	char studentId[10];
        char name[10];
        int grade;
        char major[100]
    } s = {"21221014","이승희",4,"기계공학과"};

    16-3. typedef


    typedefを使用すると、宣言を短くするために任意のデータ型を作成できます.
    #include <stdio.h>
    
    typedef struct {
    	char studentId[10];
        char name[10];
        int grade;
        char major[100];
    } Student;
    
    int main(void){
    	Student s = {"21221014","이승희",4,"기계공학부"};
        printf("학번: %s\n",s.studentId);
        printf("이름: %s\n",s.name);
        printf("학년: %s\n",s.grade);
        printf("학과: %s\n",s.major);
        system("pause");
        return 0;
    }

    16-4. 構造ポインタ変数


    前述したように、Student構造体をtypedefで宣言する場合、ポインタ変数として構造体が使用されます.
    この場合、次のように、宣言されたメモリに構造体を入れます.
    int main(void){
    	Student *s = malloc(sizeof(Student));
        strcpy(s->studentId,"201221815");
        strcpy(s->name,"이승희");
        s->grade = 4;
        strcpy(s->major,"기계공학부");
        printf("학번: %s\n",s->studentId);
        printf("이름: %s\n",s->name);
        printf("학년: %d\n",s->grade);
        printf("학과: %s\n",s->major);
        system("pause");
        return 0;
    }