概念:结构体时一种构造数据类型 用途:把不同类型的数据组合成一个整体 内存:各成员所占内存空间的累加
一.结构体的声明与定义变量的方法一共有三种: 1.常规定义: struct AA { int a; int b; }; //注意大括号后面有分号 变量定义:struct 机构体名 结构体变量名表 如: struct AA aa,bb;(前面的struct不能掉) 成员调用:aa.a; aa.b;
2.尾部定义。 struct CC { int a; int b; }aa,bb; 此时aa,bb就是已经定义好的CC类型的变量了,这种情况在声明时struct前就一定不能加typedef,如果加上了,aa,bb就成了和CC一样的结构体类型了,而不是变量了。
3.无名结构体 struct CC { int a; int b; }vip1,vip2; 此种情况除了vip1,vip2,不能再在其他地方定义新的变量,即定义了几个就只能用几个。
构造数据类型,也叫联合体。 用途: 使几个不同类型的数据共占一段内存(相互覆盖)
特点: 1共用体变量任何时候只有一个变量存在。 2,共用体变量定义分配内存,长度=最长成员所在字节数 3,定义共用体变量的方式和结构体一样有三种:常规,尾部,无名。 4,当给一个成员重复赋值时或对多个成员赋值时,只承认最后一次的赋值。
功能:用自定义名字为已有数据类型命名(有点伪装的意思) 范围:只能针对已有数据类型使用。比如:int ,char, double,…..而define什么都可以换。
举例: typedef int fuck; fuck you = 2; printf(“%d”,you) //2
用途:列举所有选项 举例:day = {Sunday,Monday,Tuesday,Wednesday,Thusday,Friday,Saturday}; 结尾有分号,如果个枚举常量没有赋值,则默认值为其下标(参考一维数组),比如此时Tuesday = 2