C语言中关于联合体的数据存放问题
我们知道联合体中不能同时访问成员变量,上图中给定了int类型的值,没有给定结构体的值,怎么可以通过给定的int的值访问,结构体中unsignedshort类型的low和h...
我们知道联合体中不能同时访问成员变量,上图中给定了int类型的值,没有给定结构体的值, 怎么可以通过给定的int的值访问,结构体中unsigned short 类型的low和high的值,我看的视频中 提到了一个什么字节存放问题 我表示看不懂 求高人解 谢谢!
展开
展开全部
联合体内,成员变量共享内存。
现在联合体内,有2个成员,一个是 y ( 需要4字节存放),另一个是结构体x,
x 正好需要 4 字节存放。所以这个联合体大小只 需要 4 字节内存 就够了。
(1个字节描述1个8位2进制数, 1 byte = 8 bits, 字节,是计算机内存 基本单位。)
主程序给 y 赋值 0x11223344 (16进制),正好放满4字节,4个字节内容 是 11,22,33,44。
结构体x 共享这4个字节里的内存。x.low 用了前2个字节, x.high 用了后2个字节,所以 x.low=0x1122,
x.high = 0x3344.
于是 num.x.low+num.x.high = 0x1122 + 0x3344 = 0x4466.
现在联合体内,有2个成员,一个是 y ( 需要4字节存放),另一个是结构体x,
x 正好需要 4 字节存放。所以这个联合体大小只 需要 4 字节内存 就够了。
(1个字节描述1个8位2进制数, 1 byte = 8 bits, 字节,是计算机内存 基本单位。)
主程序给 y 赋值 0x11223344 (16进制),正好放满4字节,4个字节内容 是 11,22,33,44。
结构体x 共享这4个字节里的内存。x.low 用了前2个字节, x.high 用了后2个字节,所以 x.low=0x1122,
x.high = 0x3344.
于是 num.x.low+num.x.high = 0x1122 + 0x3344 = 0x4466.
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询