C++中的联合体类型和枚举类型

来源:互联网 发布:洗脑 教育 知乎 编辑:程序博客网 时间:2024/05/08 03:43

一、联合体:

1、特点:

      a.) union 关键字可以省略 (指定义联合体变量的时候可以省略关键字)

      b.) 支持匿名联合

2、定义格式:

union 联合体名

{

    //定义成员.     

}; //";" 分号不能丢哦


3、使用(直接上代码)

void UnionFunEx(){union //匿名联合定义{int num;char buf[4];};num = 0x12345678;for (int i = 0 ;  i < 4 ; ++i){//cout<<"buf["<<i<<"] = "<<buf[i]<<endl;//小端系统 低位字节保存低位数据printf("%#x,[%p]\r\n",buf[i],&buf[i]);//前面输出值,后面输出所在内存地址(数组中4个元素的地址均一样)}//小端系统 低位字节保存低位数据printf("%#x,%#x,%#x,%#x\r\n",buf[0],buf[1],buf[2],buf[3]);  //输出0x78,0x56,0x34,0x12cout<<"----------------------------------------"<<endl;printf("[%p]\r\n",&num);printf("[%p]\r\n",buf);}void UnionFun(){union { //匿名联合定义int n;char c[4];};n = 0x12345678;printf("%x,%x,%x,%x\r\n",c[0],c[1],c[2],c[3]); //输出0x78,0x56,0x34,0x12}

二、枚举

1、特点:

a.) enum 关键字是可以省略的(指当定义枚举变量时,关键enum可以省略)

b.) 枚举是一个独立的数据类型,C语言当中枚举最基本的就是整型 (这一点决定了,C语言和C++语言中使用枚举时完全不同)

2、定义格式:

enum 枚举名称 {ONE,TWO,THREE,...}; //";" 分号不能丢

3、使用(直接上代码)

void EnumFunEx()
{
enum DIRECTION{UP,DOWN,LEFT=10,RIGHT};


//DIRECTION dd = 66;  //编译报错,类型不一致 .C++中不能将整型转换成枚举,因为在C++当中枚举是独立的数据类型。而枚举是可以转换成整数的。
DIRECTION dd = DOWN;
cout<<dd<<endl;
}
void EnumFun()
{
enum E{a,b,c,d};


int n = b; //枚举可以转换成整数


//E e = 10 ; //错误,整数不能给枚举赋值,只能用a,b,c,d赋值.


cout<<"n: "<<n<<endl;
}
0 0
原创粉丝点击