|
发表于 2013-1-28 22:19:38
|
显示全部楼层
本帖最后由 思无邪 于 2013-1-28 22:25 编辑
这个和编译器有关的,不要求对齐的就是全部成员变量之和,有些编译器需要对齐,还需要计算对齐的字节和补空的字节。最好是再找些资料看看吧。我在UC中测试了下是 32.用下面的代码观察变量的地址变化或许你会明白。- #include<stdio.h>
- int main()
- {
- struct student
- {
- long num;
- char name[20];
- float score;
- char ch;
- }stu;
- int n = sizeof(struct student);
- printf("&stu = %p\n",&stu);
- printf("&stu.num = %p\n",&(stu.num));
- printf("&stu.name = %p\n",&(stu.name));
- printf("&stu.score = %p\n",&(stu.score));
- printf("&stu.ch = %p\n",&(stu.ch));
- printf("n = %d\n",n);
-
- }
复制代码
|
|