c语言问题 公用体
程序如下:输出的结果是:1000书中的定义:“共用体变量中的所有成员共享一段公共存储区所以共用体变量所占内存字节数与其成员中占字节数最多的那个成员相等”问题:上面这句话应...
程序如下:
输出的结果是:1000
书中的定义:
“共用体变量中的所有成员
共享一段公共存储区
所以共用体变量所占内存字节数
与其成员中占字节数最多的那个成员相等”
问题:
上面这句话应该怎么理解?
实际在计算机内存中是怎么运行的? 展开
输出的结果是:1000
书中的定义:
“共用体变量中的所有成员
共享一段公共存储区
所以共用体变量所占内存字节数
与其成员中占字节数最多的那个成员相等”
问题:
上面这句话应该怎么理解?
实际在计算机内存中是怎么运行的? 展开
3个回答
展开全部
Union类型占的内存由元素中占内存最大的元素决定(和这个元素占的字节数相同)
不同元素公用的是同一块内存。
比如这个例子中,char *和两个int类型的变量,三者占的内存都是sizeof(int) (指针占的字节数一般和int类型相同)
而且这三个变量用的是同一块内存。
s.name = "WONGLONG"; 这是把这个常量字符串的首地址赋值给了s.name,也就是修改了上面说到的共用的内存
s.age = 28;又是修改了上面的公用内存
s.income = 1000又修改了公共的内存。
所以最后输出公共内存的内容,以%d的方式就是1000了。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
首先,输出的结果是:1000。//是正确的。
共用体,所有成员共享一段内存空间,在某个时刻,在该存储单元中只能存放一个数据。
从后面的赋值语句,可以看得出来,最后,在这个共用体变量对应的存储单元中存放的是1000。
所以,这个时候,你去输出。或者引用 s.age或者s.income,其结果都是1000。
共用体,所有成员共享一段内存空间,在某个时刻,在该存储单元中只能存放一个数据。
从后面的赋值语句,可以看得出来,最后,在这个共用体变量对应的存储单元中存放的是1000。
所以,这个时候,你去输出。或者引用 s.age或者s.income,其结果都是1000。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询