[关闭]
@yiltoncent 2015-03-16T09:15:52.000000Z 字数 615 阅读 2487

零长度数组与柔性数组

C语言基础


零长度数组(Zero-length array)与柔性数组(Flexible array)

GNU C允许使用零长度数组,它们非常有用。如下是一个零长度数组的应用,零长数组在有固定头部的可变对象上非常有用。

struct line{     
    int len;     
    char contents[0]
};

零长数组使用的优缺点:

优点

缺点


而在最新的ISO C99实现中,我们可以使用柔性数组,与零长数组相比,在语法和语义上有些许差异:

比较零长数组和柔性数组,他们的功能性是一致的:方便的应用在有固定头部的可变对象上。这种特性非常适用于网络数据传输的场合。需要注意的是,他们分别一个是非标准一个是标准,零长数组是由GNU提出并实现的,这也反应了当时C编程者对于这种特性的需求。可以想象,ISO C99吸收了这个特性并加以改变而产生了柔性数组。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注