【发布时间】:2013-11-26 15:19:03
【问题描述】:
为什么 C 允许这样做:
typedef 结构体 { int arr[]; } s;数组arr 没有指定大小?
【问题讨论】:
-
标准 C 不允许显示的结构。结构中必须至少有一个命名成员以及灵活数组成员或 FAM(并且 FAM 必须在最后一个)。最小的结构可能是
typedef struct s { int size; int arr[]; } s;,它允许您记录数组的大小(在size成员中)。这个大小几乎肯定是能够可靠地访问数组成员所必需的。 -
尝试使用不允许灵活数组的 (UCSD) Pascal 之类的语言,您会喜欢此功能。
标签: c arrays flexible-array-member