本帖最后由 Hi围城 于 2014-3-29 18:40 编辑
- #include <stdio.h>
- int main(int argc, const char * argv[])
- {
- struct RankRecord
- {
- // int 4个字节
- int no;
- // char * 8个字节
- char *name;
- // int 4个字节
- int score;
- // 我加的一个元素,注意现在多了一个元素,用在我的结尾结论中
- int a;
- };
- struct RankRecord records[3]=
- {
- {1,"jack",5000},
- {2,"jim",500},
- {3,"jake",300}
- };printf("size=%d\n",sizeof(records[1]));
- return 0;
- }
- // 所占字节分析(补齐算法):结构体中的第一个元素它的下一个元素相比所占字节数为其倍数,不足的在中间补齐(4+4+8=16);当执行到结构体中的末尾元素时,就会分析所占字节是否为元素的所占字节最大的那个变量的倍数(16+4)% 8 == 0 ? '和' :’倍数'。其中为真就返回所有成员字节数的和,为假就补齐直到能整除8,所以这里返回的是24。
- // 我在你的结构体变量中再加了个int a,结果还是24,掌握了方法,一切都在掌握中。
- // 我以前也一直被这个问题困扰,这是我自己推敲验证出来的,希望能帮到您!
复制代码
|