打印

关于contents[0]的问题

[复制链接]
1324|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

粉丝