我刚刚遇到了一些在C++类中声明结构的代码,如下所示:
struct T
{
int data;
T* next;
} array[0];这种声明是做什么的?将"array“放在struct定义的末尾有什么作用?
发布于 2011-01-24 16:04:03
啊,它几乎是一个“灵活的数组成员”。
它是在C99中形式化的,但它是一个创建动态数组的古老的C技巧。为对象分配更多的内存,您可以在数组中存储更多的元素。
我认为使用特定的0是一种折衷,因为实际的[]灵活阵列并不是在C89或C++中。此模式的更规范的遗留用法是...[1]。
发布于 2011-01-24 16:01:36
这意味着,结构定义仅在该类中可用。
发布于 2011-01-24 16:02:53
它试图声明一个类型,T和一个大小为零的T数组。但是,在C++中声明大小为零的数组是不合法的。代码无效。
https://stackoverflow.com/questions/4779779
复制相似问题