零长度数组意义

在_C++ Primer_动态数组中提到:动态分配一个空数组是合法的。

size_t n = get_size();
int* p = new int[n];
for(int* q = p; q != p + n; ++q)

char arr[0];//错误
char cp = new char[0];

当我们用new分配一个大小为0的数组时,new返回一个合法的非空指针。此指针保证与new返回的其他任何指针不相同,对于零长度的数组来说,此指针就像尾后指针一样。我们可以像尾后迭代器一样使用这个指针。

陈皓博客C语言结构体里的成员数组和指针中,提到零长度数组意义。

在某一结构末尾如定义类似 char bytes[0] 的零长数组,表示该结构不定长,可通过数组的方式进行扩展。结构中必包含一个长度信息。结构本身类似于一个信息头。同时,此结构只能通过堆方式分配内存。

Reference

[1].http://blog.csdn.net/wade23/article/details/4510971

[2].http://coolshell.cn/articles/11377.html

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。