类型别名 联合类型 枚举类型

时间:2022-08-03 00:25:05
typedef--给类型起别名 typedef int myINT;//关键字+类型+别名 typedef int * myPoint; typedef struct NODE { int a; }_NODE; //给结构体起别名 int main(void) { myINT a=12; myPoint p; printf("%d\n",a); } //声明一个联合的类型 /******************************* //声明一个联合的类型 typedef union STU { char arr[5];//最大的放前面 char ch; }_STU; //1.联合是所有成员公用一个内存 //地址上理解:所有成员地址上是一样的 //2.联合的初始化:只允许初始化一个成员 默认是第一个 //编程建议:初始化最大空间的成员 //赋值也会覆盖,联合的成员值与最新的一条成员赋值有关
int main(void) { //声明一个联合的变量 //_STU aa; //printf("%p,%p\n",&aa.ch,aa.arr);//可以看出 成员地址一样 //_STU aa={'a'};//初始化多个成员即会报错 _STU aa={"asd"}; printf("%c,%c\n",aa.ch,aa.arr[1]); aa.ch='w'; printf("%c,%c\n",aa.ch,aa.arr[0]); } *****************************/ /************************************************* //内容:联合大小 #pragma pack(2)//设置内存对齐数 比最大类型小有效果,否则按最大类型字节数对齐 //声明一个联合的类型 union STU { char arr[5];//最大的放前面 char ch; // short sh;//2字节 int in; }; //1.最大空间成员+最大数据类型 跟成员个数没关 //2.内存对齐有关,跟最大类型(成员类型)
int main(void) { printf("%d\n",sizeof(union STU)); } *******************************************/ 类型别名 联合类型 枚举类型 枚举类型的大小 /***************************************** //内容: 枚举 enum STU //关键字enum +名字(可有可无) { black=1,red,blue=0,yellow,pink=21 //一些有意义的字符串 字符串不可以重复,但多个字符串可以代表同一个数 };
int main(void) { //声明一个枚举的变量 enum STU color=black; int a=black; char ch=black;//不适用跨平台 int tianqi=black;
printf("%d\n",color); printf("%d,%d,%d,%d,%d\n",black,red,blue,yellow,pink); //red=blue;参数 数字怎么用 这个别名怎么使用 //给整形常量取别名
//默认0,1,2,3,4....int //指定值得位置向后 累加
//作用:增加程序的可读性 0 1 if(tianqi==black) { printf("晴天\n"); } if(tianqi==blue) { printf("阴天\n"); } } **********************************/ /******************************** //内容:枚举变量的大小 enum STU //关键字enum +名字(可有可无) { black,red,blue,yellow };
int main(void) { int a=black; printf("%d\n",sizeof(a)); printf("%d\n",sizeof(enum STU)); //枚举默认都是int类型 4字节 -231-1-231 //枚举的“成员”都是常量 即可以把枚举当int整型来理解
//枚举类型的大小--4个字节 //枚举为了规范,“成员”用int来装 } *******************************/
/****************************************************** //内容:枚举类型的 大小都是4字节 enum //关键字enum +名字(可有可无) { black=0,red=1,blue=1,yellow,qwq }b;
int main(void) { int bb=12; printf("%d\n",sizeof(b)); b=12; //int -2^31~2^31-1 0 1 2 3 集合 两者一样 //enum 5个int类型的数 集合 区别就是有别名 } ******************************************/