c语言怎么自动对齐 C语言结构体与共用体的应用?
浏览量:2904
时间:2021-03-11 14:07:06
作者:admin
C语言结构体与共用体的应用?
公共体:sizeof(Union data1)的值是16。默认情况下,公共正文的最大基本类型是double,它占用8个字节,因此公共正文与8对齐。字符数组C2占用9字节,因此整个公共体应该占用9字节,但根据对齐原则,实际分配给它的内存是16字节。Struct:Struct数据与8字节对齐,long类型的成员1分配8字节。s、 I、C和a最初分别占用4、2、1和10字节。考虑到对齐方式,s分配4个字节,I分配2个字节,C分配2个字节。此时,8个字节刚刚用完。最初分配了10个字节。考虑到对齐,整个结构占用的存储空间是8的倍数,因此分配了16个字节。因此,结构数据占用84216=32字节。
C语言求结构体sizeof怎么求?
结构大小遵循以下两个原则:1)数据对齐原则:内存按照结构成员的顺序排列。将其排列到成员时,在其前面打开的空间的字节数必须是成员类型占用的字节数的整数倍。如果不够,就会补充,以此类推。2) 总空间是占用空间最大的成员类型占用的字节数的整数倍。Structc{intx//4 byte float//4 byte}a[3]a[3]位组,sizeof(a)计算数组的大小,位8*3=24,如果结构更改为以下形式:Structc{double//8 byte char//1 byte total:8 1intz//4 bytes,第一个字节和位9 bytes,不满足第一个,因此(9 3)4=16}total 16,满足第二个字节。
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。