首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

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

2012-08-15 
C 变长结构体长度问题[codeC/C++]#includestdio.hstructAA{intdata[0]}voidmain(){printf( %d ,siz

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

热点排行