Chinaunix首页 | 论坛 | 博客
  • 博客访问: 284997
  • 博文数量: 87
  • 博客积分: 1206
  • 博客等级: 少尉
  • 技术积分: 725
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-16 00:12
个人简介

do the right things the right ways

文章分类

全部博文(87)

文章存档

2017年(5)

2016年(6)

2015年(1)

2012年(11)

2011年(64)

分类: C/C++

2011-03-23 15:27:19

         在C++中,从来就没有柔性数组这一说,但是在C99标准中就支持一个叫做柔性数组的东东。
         柔性数组用在结构体中,如下所示:
#include

typedef 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。
         原因是这个数组根本就不是结构体的一部分,不属于编制序列,就好像中软外派到华为工作一样,更本就不是华为的人,仅仅是编外人员。当需要柔性数组的时候,暂且把它当成是结构体的一个成员使用,至于说到南京泡温泉
  找中软去。
阅读(1227) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~