------------------------------------------------------联合体-----------------------------------------------------
E.g:
union my_union {
char A; ---> 1
int B; ---> 4
double C; ---> 8
}; ---> total : 8字节
★ 共用相同的存储空间,大小由存储空间最大的变量决定
E.g:
union my_union my_2;
my_2.A = 'A';
my_2.B = 150;
my_2.C = 1111.22222;
//查看联合体成员地址 -----> 存贮在相同地址单元上
(gdb) p &my_2.A
$5 = 0xbffff338 "A\204\004\b\364O\374\267\300\204\004\b\364", <incomplete sequence \374\267>
(gdb) p &my_2.B
$6 = (int *) 0xbffff338
(gdb) p &my_2.C
$7 = (double *) 0xbffff338
我们再从内存地址中存储的数值来看:
·执行 my_2.A = 'A' 后的内存变化 ---> 0xbffff338: 0x08048441 ---> 最低字节数值 0x41 ---> 65 --> 'A'
(gdb) x/8x 0xbffff338
0xbffff338: 0x08048441 0xb7fc4ff4 0x080484c0 0xb7fc4ff4
0xbffff348: 0x00000000 0xb7e384d3 0x00000001 0xbffff3e4
//执行 my_2.B = 150 后的内存变化 ---> 0xbffff338: 0x00000096 ---> 数值 0x96 --> 150
(gdb) n
58 my_2.C = 1111.22222;
(gdb) x/8x 0xbffff338
0xbffff338: 0x00000096 0xb7fc4ff4 0x080484c0 0xb7fc4ff4
0xbffff348: 0x00000000 0xb7e384d3 0x00000001 0xbffff3e4
//执行 my_2.C = 1111.22222 后的内存变化
(gdb) n
60 return 0;
(gdb) x/8x 0xbffff338
0xbffff338: 0x8da3c212 0x40915ce3 0x080484c0 0xb7fc4ff4
0xbffff348: 0x00000000 0xb7e384d3 0x00000001 0xbffff3e4
----------------------------------------------枚举类型------------------------------------------------------------
·枚举类型: 对常用数值的一个陈列,标识符任意,(任意时刻只能枚举一个值)占用4个字节
enum my_enum { OK,OOK,OOOK }; ----> 默认从起始为0开始,给第一个元素赋值
----> OK = 0 ,
OOK = 1,
OOOK = 2,
enum my_enum { OK=8,OOK,OOOK,OOOOK }; ----> 默认从起始为8开始,给第一个元素赋值
----> OK = 8 ,
OOK = 9,
OOOK = 10,
enum my_enum { OK=8,OOK,OOOK=0,OOOOK }; ----> 默认从起始为8开始,给第一个元素赋值,遇到重新赋值时,重新开始往后赋值
----> OK = 8 ,
OOK = 9,
OOOK = 0,
OOOOK = 1,
★枚举类型的使用的好处:使程序更直观,更人性化,更易懂
文章评论(0条评论)
登录后参与讨论