http://blog.csdn.net/ssdsafsdsd/article/details/8234736在标准C和C++中,长度为0的数组是被禁止使用的。不过在GNU C中,存在一个非常奇怪的用法,那就是长度为0的数组,比如Array[0];很多人可能觉得不可思议,长度为0的数组是没有什么意义...
分类:
编程语言 时间:
2014-11-07 18:38:55
阅读次数:
295
C语言中的零长度数组用法详解
在C语言中允许在结构体和联合体中定义零长度的数组,写法可以是以下两种:
char p[]或者char p[0],这个数组定义在结构体或者联合体中,不占用空间大小。
这是个广泛使用的常见技巧,常用来构成缓冲区。比起指针,用空数组有这样的优势:
1.不需要初始化,数组名直接就是所在的偏移;
2.不占任何空间,指针需要占用int长度空间,空数组不占...
分类:
编程语言 时间:
2014-09-21 03:12:19
阅读次数:
240
以前只是知道这个东西,可以解决一些问题,最近自己做一个字符串操作的东东,看了下redis的源码,做个小的总结。struct cl_str_s{ int free; int len; char buf[];}; 代码的意思是,我们定义了一个结构体,它有这么三个属性,作用很明显不详细...
分类:
其他好文 时间:
2014-07-13 09:25:28
阅读次数:
158
GNU C中的零长度数组(转载)
原文链接:http://blog.csdn.net/ssdsafsdsd/article/details/8234736
在标准C和C++中,长度为0的数组是被禁止使用的。不过在GNU C中,存在一个非常奇怪的用法,那就是长度为0的数组,比如Array[0];很.....
分类:
其他好文 时间:
2014-05-26 18:18:16
阅读次数:
285
0长度的数组在ISO C和C++的规格说明书中是不允许的,但是由于gcc 预先支持C99的这种玩法,所以,“零长度数组”在gcc环境下是合法的。
先看下面两个例子。
pzeroLengthArray.c
#include
struct str
{
int len;
char *s;
};
struct foo
{
struct str *a;
};
int main()
{...
分类:
其他好文 时间:
2014-04-30 22:22:39
阅读次数:
300