【发布时间】:2013-06-27 13:38:33
【问题描述】:
我有以下代码:
typedef struct
{
int name;
int info[1];
} Data;
那么我有五个变量:
int a, b, c, d, e;
如何将它用作一个灵活的数组来保留五个变量的所有值?
【问题讨论】:
-
这里的灵活是什么意思?
-
什么是“灵活数组”?您显示的结构根本没有数组。你的问题一点也不清楚。
-
很明显他的意思是一个灵活的数组成员。如果您不知道那是什么,那么,请不要费心回答。
-
有些人使用这样的结构并为整个结构分配更多的内存,这样结构和数组将是一个单一的、连续的分配:
Data *d = malloc(sizeof(Data) + 10*sizeof(int)); -
@ctn 不仅仅是“某些人”。灵活的数组成员是一种语言特性,它已成为 C 语言 14 年的一部分。即使在 C99 之前,它也很常用(通常称为“struct hack”或类似名称),但当时它是未定义的行为且不安全。