本帖最后由 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;
没有完全误明白,等有明白人继续来悟吧 |