问问题描述
C语言union函数,有没有大佬在?求高手帮忙看看这个!
答精选答案

union类型变量的成员共用同一块内存空间,空间大小是由占用内存空间最大的变量决定的,并且每个成员的首地址是一样的(你可以打印每个成员的首地址试试)。根据你写的程序,这个union类型的空间大小为4个字节,因为数组i占用4个字节,k占用4个字节,数组c占用4个字节,最大也就4个字节。
因为一个short类型的变量占用2个字节:
s->i[0]=0x39;说明这个union类型的变量占用的内存的前两个字节的值为0x39;
s->i=0x38; 说明这个union类型的变量占用的内存的后两个字节的值为0x38;
因为存放数据的地址不冲突,所以没有覆盖掉,如果你对k或者数组c赋值的话,上面的值就会被覆盖掉了。
本文来自作者[PUBG刺激战场集锦]投稿,不代表公众科技网立场,如若转载,请注明出处:https://www.cpst.net.cn/changshijingxuan/202609/1503365.html
评论列表(4条)
我是公众科技网的签约作者“PUBG刺激战场集锦”!
希望本篇文章《C语言union函数》能对你有所帮助!
本站[公众科技网]内容主要涵盖:教育咨询,知识百科
本文概览:union类型变量的成员共用同一块内存空间,空间大小是由占用内存空间最大的变量决定的,并且每个成员的首地址是一样的(你可以打印每个成员的首地址试试)。根据你写的程序,这个union类型的空间大小为4个字节,因为数组i占用4个字节,k占用4个字节,数组c占用4个字节,最大也就4个字节。因为一个short类型的变量占用2个字节:s->i[0]=0x39;说明这个union类型的变量占用的内存的前两个字节的值为0x39;s->i=0x38;