do the right things the right ways
分类: C/C++
2011-03-23 15:27:19
#includetypedef struct test{
int a;
int b[0];
}stu;int main(){
printf("%d\n",sizeof(stu));
return 0;
int b[0]就是柔性数组,也叫做flexible array。他在这里只是起到一个结构体扩展的作用,包含柔性数组的结构体,在它的前面必须至少包含一个其他类型的成员,这样我们就定义了一个可变长的结构体,在一些特殊的场合作用是不可以小视的。}
stu *p = (stu *)malloc(sizeof(*stu) + 100*sizeof(int)); 这样分配,想给柔性数组也开辟空间,但是在测试sizeof(*p) 的时候,值仍然是4。但是,如果我们在分配内存的时候: