您的位置:首页 > 编程语言 > C语言/C++

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

2017-07-31 17:06 435 查看
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类型的数 集合 区别就是有别名
}
******************************************/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息