Sizeof Structure in C
本问题已经有最佳答案,请猛点这里访问。
在C中查找结构的大小
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | struct student { char name; int age; float weight; }; </p> <p> main () { int i,j,k,l; struct student s1; i=sizeof(s1.name); j=sizeof(s1.age); k=sizeof(s1.weight); l=sizeof(s1); printf (" size of name %d",i); printf (" size of age %d",j); printf (" size of weight %d",k); printf (" size of s1 %d",l); </p> <wyn>printf(" "); } |
我的输出是:
size of age 4
size of weight 4
size of s1 12
但是结构尺寸应该是其成员尺寸的总和。为什么我得到12而不是9作为结构变量s1的大小。有人能解释一下怎么了吗?
出于性能或硬件原因,结构中的字段应适当对齐。阅读有关数据结构对齐的信息(详细信息取决于目标处理器和ABI)。
在x86-64/Linux上的示例中:
1 2 3 4 5 | struct student { char name; int age; float weight; }; |
因此,整个
如果
顺便说一句,您的
gcc编译器提供了一个很好的扩展:
如果性能或大小对您很重要,则应将字段放入