读书人

C 变长结构体长度有关问题

发布时间: 2012-08-15 16:57:17 作者: rapoo

C 变长结构体长度问题
[code=C/C++]
#include <stdio.h>

struct AA
{
int data[0];
};

void main()
{
printf( "%d ",sizeof(struct AA));
return;
}
[/code]

为什么输出是4而不是0或者1?


如果按空结构体来算应该是1 但是C又不支持空结构体

[解决办法]
楼主,我错了,我没看清楚,我把0看成了1,事实上,我觉得可以是1的,至于0的话,肯定是不可能的,因为如果AA的大小 是0,那么编译器无法区别两个不同的AA对象(它们的地址是多少 ?)对吧,所以最后结果一定是1或者4,至于到底是哪一个呢,这个跟编译器的对齐法则有关,在有的编译器上一定可能输出1的,我在VS上就测试过了,输出是1

读书人网 >C语言

热点推荐