程序如下:
输出的结果是:1000
书中的定义:
“共用体变量中的所有成员
共享一段公共存储区
所以共用体变量所占内存字节数
与其成员中占字节数最多的那个成员相等”
问题:
上面这句话应该怎么理解?
实际在计算机内存中是怎么运行的?
Union类型占的内存由元素中占内存最大的元素决定(和这个元素占的字节数相同)
不同元素公用的是同一块内存。
比如这个例子中,char *和两个int类型的变量,三者占的内存都是sizeof(int) (指针占的字节数一般和int类型相同)
而且这三个变量用的是同一块内存。
s.name = "WONGLONG"; 这是把这个常量字符串的首地址赋值给了s.name,也就是修改了上面说到的共用的内存
s.age = 28;又是修改了上面的公用内存
s.income = 1000又修改了公共的内存。
所以最后输出公共内存的内容,以%d的方式就是1000了。
本回答被提问者采纳