【发布时间】:2015-09-03 02:26:49
【问题描述】:
我是 C 的新手,我偶然发现了这个 c 结构:
typedef struct
{
int dog;
int cat;
} FOO;
typedef struct
{
int id;
FOO* pRow[0]
} BAR;
我知道基本的 c 和 c++,但我不知道下面这行的动机:“FOO* pRow[0]”。
如果作者想定义一个指向 FOO 数组的指针,那么他/她应该将其定义为“FOO* pROW”,对吗?那么为什么在这种情况下 pROW[0] 代表呢?
请赐教。 谢谢!
【问题讨论】:
-
称为“灵活数组成员”:en.wikipedia.org/wiki/Flexible_array_member
-
@AndrewMedico:不是。这是zero-length array。
-
@AndrewMedico 弹性数组是 C99 中的一个实际语言功能,这是一个 hack。
标签: c