C语言共用体

Python015

C语言共用体,第1张

int和char占用的字节数跟编译器有关,可以用sizeof()查看。

这里假设int占4个字节,char占1个字节,共用体变量a的内存分布如下图所示:

因此,如果之前未对 i 赋值,那打印 i 的值实际上就是打印二进制(xxxx xxxx ch[1] ch[0])数对应的十进制数。xxxx表示该字节的数是不确定的。当xxxx是0的时候,则 i = (00 00 00 0C),对应的十进制数就是13。

问题1:不是将'a'赋给year和mouth,而是取year和mouth的时候,取到了'a'.

union共用最大一个元素的内存空间,只保存最后赋的值

问题2:难道是(&u).name? 地址表示的话不应该用 ' -> '么?待验证

C语言下,正常输出地址。c++还没试