概述:
| struct | union | enum | |
| 成员类型 | 成员类型自由 | 成员类型自由 | 整型数值常量 |
| 占有内存 | 每个成语独立占有内存,修改一个成员不影响另外一个 | 所有成员共用一块内存,所以修改一个会影响所有成员值 | 一个元素的内存 |
| 使用场景 | 节省内存适合做struct的成员变量 | 替换整型常量 |
1.结构体
- 1 语法基础
- 2 结构体基本语法代码
11 12 #include13 14 struct Student { 15 char name[50]; //类型声明的时,成员结尾用分号 16 int score; 17 int num; 18 }; 19 20 typedef struct { 21 char *name; //这里是指针类型,所以所占内存大小不变。 22 double score; 23 int num; 24 } STUDENT; 25 26 static int MONTH = 12; 27 int main () { 28 struct Student tianqiang; 29 struct Student *pStudent; 30 strcpy(tianqiang.name, "qi"); 31 tianqiang.score = 98; 32 tianqiang.num = 3; 33 34 printf("tianqiang.name = %s, tianqiang.score = %d, tianqiang.num = %d n", tianqiang.name, tianqiang.score, tianqiang.num); 35 pStudent = &tianqiang; 36 //pStudent->name = "jianmei"; 37 pStudent->num = 4; 38 printf("tianqiang.name = %s, tianqiang.score = %d, tianqiang.num = %d n", tianqiang.name, tianqiang.score, tianqiang.num); 39 printf("pStudent->name = %s, pStudent->score = %d, pStudent->num = %d n", pStudent->name, pStudent->score, pStudent->num); 40 41 STUDENT zeyu = {"y", 100, 1}; //定义通俗易懂赋值时,中间用逗号隔开,而不是分号 42 printf("zeyu.name = %s, zeyu.score = %f, zeyu.num = %ld n", zeyu.name, zeyu.score, zeyu.num); 43 44 STUDENT *pZeyu = &zeyu; 45 printf("sizeof(zeyu) = %ld, sizeof(pZeyu) = %ld n", sizeof(zeyu), sizeof(pZeyu)); 46 printf("sizeof(tianqiang) = %ld, sizeof(pStudent) = %ld n", sizeof(tianqiang), sizeof(pStudent)); 47 48 printf("sizeof(MONTH) = %d n", sizeof(MONTH)); 49 return 0; 50 } 51
2. union共用体
2.1 union语法基础



