关于contents[0]的问题

[复制链接]
2327|3
 楼主| 6019赵文 发表于 2011-3-3 16:34 | 显示全部楼层 |阅读模式
本帖最后由 6019赵文 于 2011-3-15 15:36 编辑

最近在看一些例程的时候发现了一个奇怪的问题

typedef struct adi_ether_frame_buffer {
u16  NoBytes;  // the no. of following bytes
u8  Dest[6];  // destination MAC address
u8  Srce[6];  // source MAC address
u16  LTfield;  // length/type field
u8  Data[0];  // payload bytes
} ADI_ETHER_FRAME_BUFFER;

这是一个以太网的帧头
u8  Data[0]; 看不太明白,

最近在GNU指南上看到

struct line {
int length;
char contents[0];
};

//...ommit code here

{
struct line *thisline
= (struct line *) malloc (sizeof (struct line) + this_length);
thisline->length = this_length;
}



貌似能悟出点,contents[0]只用在动态申请内存的地方,可以把它看成一个指针,指向一块内存,内存的大小由this_length定义

用的时候,可以这么用

// for(i=0; i<this_lengthe; i++) thisline->contents【i】 = 0xaa;


没有完全误明白,等有明白人继续来悟吧
思行合一 发表于 2011-3-3 22:33 | 显示全部楼层
楼主费心了!不错!
3B1105 发表于 2011-3-10 20:59 | 显示全部楼层
直接顶上去,解决了我一直的疑问
 楼主| 6019赵文 发表于 2011-3-11 21:43 | 显示全部楼层
希望对大家有帮助啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则

350

主题

1515

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部