山寨:不是最好的,是最适合我们的!欢迎体验山寨 中文版MSDN

Blog @ Blog

当华美的叶片落尽,生命的脉络才历历可见。 -- 聂鲁达

常用链接

统计

积分与排名

BBS

Blog

Web

最新评论

变长结构体

 

typedef   struct   tagTest   
  
{   
      
int   uID;   
      
int   iNum;   
      
int   offset   
      
int   data[1]; //可变长数据,根据所需要数据类型定义  
  }
Test;

   
  data是一个数据,个数为1,但是其实在使用的时候,不一定为1,也就是说在上述结构不能  
  直接Test tmp;这样声明,必要声明成指针,然后在malloc的时候,根据iNum数目进行申请,  
  譬如iNum为5个int,这可以这样   

  p   =   (Test *)malloc(sizeof(Test) + (iNum - 1* sizeof(int));   

  这样,后面的内容可以通过p->data[i]访问了,p->data[0]就是我们当初定义的int data[1];其后的
  p->data[1],p->data[2],p->data[3],p->data[4]就是(iNum - 1)新分配出来空间。

文章出处:http://www.diybl.com/course/3_program/c++/cppsl/2008927/146223.html

posted on 2009-02-19 22:50 isabc 阅读(1339) 评论(2)  编辑 收藏 引用 所属分类: C++基础

评论

# re: 变长结构体 2009-02-20 10:24 guest

结构中的offset后缺少分号;Test后分号应为半角  回复  更多评论   

# re: 变长结构体 2009-05-14 09:20 higuy

呵呵
  回复  更多评论   


只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


广告信息(免费广告联系)

中文版MSDN:
欢迎体验