定義
關鍵字:struct
struct 結構體名
{
結構體所包含的變量或數組
}; //結尾為分號
-
struct stu{
-
char *name; //姓名
-
int num; //學號
-
int age; //年齡
-
char group; //所在學習小組
-
float score; //成績
-
};
定義結構體變量
既然結構體是一種數據類型,那么就可以用它來定義變量。例如:
struct stu stu1, stu2;
定義了兩個變量 stu1 和 stu2,它們都是 stu 類型,都由 5 個成員組成。注意關鍵字struct
不能少。
stu 就像一個“模板”,定義出來的變量都具有相同的性質。也可以將結構體比作“圖紙”,將結構體變量比作“零件”,根據同一張圖紙生產出來的零件的特性都是一樣的。
也可定義的同時定義變量
-
struct stu{
-
char *name; //姓名
-
int num; //學號
-
int age; //年齡
-
char group; //所在學習小組
-
float score; //成績
-
} stu1, stu2;
理論上講結構體的各個成員在內存中是連續存儲的
逐一賦值
-
stu1.name = "Tom"; // 結構體名.成員名=值
-
stu1.num = 12;
-
stu1.age = 18;
-
stu1.group = 'A';
-
stu1.score = 136.5;
整體賦值(整體賦值僅限於定義結構體變量的時候,在使用過程中只能對成員逐一賦值,這和數組的賦值非常類似)
-
struct{
-
char *name; //姓名
-
int num; //學號
-
int age; //年齡
-
char group; //所在小組
-
float score; //成績
-
} stu1, stu2 = { "Tom", 12, 18, 'A', 136.5 };
結構體數組
.定義
-
struct stu{
-
char *name; //姓名
-
int num; //學號
-
int age; //年齡
-
char group; //所在小組
-
float score; //成績
-
}class[5]; //數組名和長度
.賦值
-
struct stu{
-
char *name; //姓名
-
int num; //學號
-
int age; //年齡
-
char group; //所在小組
-
float score; //成績
-
}class[5] = {
-
{"Li ping", 5, 18, 'C', 145.0},
-
{"Zhang ping", 4, 19, 'A', 130.5},
-
{"He fang", 1, 18, 'A', 148.5},
-
{"Cheng ling", 2, 17, 'F', 139.0},
-
{"Wang ming", 3, 17, 'B', 144.5}
-
};
.變量引用和修改
結構體數組的使用,例如,獲取 Wang ming 的成績:
class[4].score;
修改 Li ping 的學習小組:
class[0].group = 'B';