Cha*_*hak 3 c struct structure
#include <stdio.h>
int main(){
struct word1{
char a;
int b;
char c;
};
struct word2{
char a;
char b;
int c;
};
printf("%d\t%d\n", sizeof(int), sizeof(char)); //Output : 4 1
printf("%d\t%d\n", sizeof(struct word1), sizeof(struct word2)); //Output: 12 8
return 0;
}
Run Code Online (Sandbox Code Playgroud)
代码可在IDEONE获得.
为什么struct 1(word1)的大小大于struct 2(word2)的大小?
这是编译器问题吗?
在int可能有一个四字节对齐要求,所以在第一种情况下,这两个的char元素必须附加到他们三个填充字节,但是在第二种情况下,你只需要第二次经过两次填充字节char元素(因为一个char元素都有一个对齐一个字节).
word1 好像:
0 |1 |2 |3 |4 |5 |6 |7 |8 |9 |10 |11
a | (padding) |b |c | (padding)
Run Code Online (Sandbox Code Playgroud)
word2 好像:
0 |1 |2 |3 |4 |5 |6 |7
a |b |(padding)|c
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1865 次 |
| 最近记录: |