零长度数组
在酷客上看到皓子的一篇博文
C语言结构体里的成员数组和指针http://coolshell.cn/articles/11377.html
感觉非常有意思,刚才突然想到了里面的零长度数组,竟然忘记怎么去实现了。特意写一篇文章巩固一下
1 //零长度数组在结构体中这样表示,之后根据len的大小 2 //动态调整str的长度 3 typedef struct 4 { 5 int len; 6 char s[0]; 7 }str; 8 9 str * CreateStr(int length) { 10 if(length <= 0) { 11 return NULL; 12 } 13 str *StrPt = (str*)malloc(sizeof(str) + length * sizeof(char)); 14 StrPt->len = length; 15 memset(StrPt->s, '\0', StrPt->len); 16 return StrPt; 17 }
这种数组叫做柔性数组,数组大小可以在实例化时再去决定。且能够使结构体中的数组和结构体在内存中保存连续,便于内存释放。皓子讲到可能对于提升访问速度不见得有很大提高,但看到这种代码觉得很有意思。在规则内玩一些trick。

浙公网安备 33010602011771号