今天在插件代码里读到这个结构体
struct ustream_buf {
struct ustream_buf *next;
char *data;
char *tail;
char *end;
char head[];
};
与此同时,在初始化函数中设置*buf->head=0;
起初将head将一个指针看待,发现无法理解。
实际上时没有理解char head[]在结构体的真正含义。
如果定义为char *p,那么64位系统sizeof结构体为40(5*8),定义为char head[]时,sizeof为32。
这种不指定数组元素个数的方式定义数组,只能放在结构体尾。
其含义为指向结构尾部的地址。那么*buf->head即为将机构体尾部第一个地址指向的内容。