首页 > 代码库 > 零长数组
零长数组
Arrays of Length Zero
这样说:
Zero-length arrays are allowed in GNU C. They are very useful as the last element of a structure that is really a header for a variable-length object
零长数组在GNU C中是允许的。结构体中最后一个元素,把他用作变长对象的头。Flexible array 即柔性数组。
但是在C++中,C++约定每个对象在内存中有唯一的地址,故零长数组在C++中其实长度是1
struct line { int length; char contents[0];};struct line *thisline = (struct line *) malloc (sizeof (struct line) + this_length);thisline->length = this_length;
可能会有疑问这里为何不直接搞一个指针和len即可?
如果用指针的话,这里不能保证变长对象的地址和结构体连续。这里就是柔性数组的好处。
内存的连续:
- 提升访问速度
- 方便释放
零长数组
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。