我有以下结构如何初始化灵活数组成员的结构
typedef struct _person {
int age;
char sex;
char name[];
}person;
我已经就如何创建一个实例,并用灵活的数组成员初始化结构做了一些基本的互联网搜索(但没有成功)而不使用malloc()
。
例如:正常结构等
struct a {
int age;
int sex;
};
我们可以创建的struct a
一个实例,并且如上述那样将其初始化像
struct a p1 = {10, 'm'};
但对于柔性阵列在它(如结构_person
)我们如何创建一个实例并初始化,比如我们如何为正常的structures
做这件事?
这有可能吗?如果是这样,我们如何在初始化过程中传递数组大小以及初始化实际值?
(或)
这是真的,唯一的办法是使用malloc()
为C99说明书中提到的创建灵活的阵列结构 - 6.7.2.1 Structure and union specifiers - point #17
?!
你不行,struct必须有编译时间大小。 – Anycorn 2011-12-31 10:48:06
@Anycorn:具有灵活数组成员的结构具有编译时间大小。 – 2011-12-31 10:56:09
GCC有一个扩展,允许你做一些像'struct {size_t len; int data []; } x = {4,{1,2,3,4}};'它会起作用,但它不可移植。您可以随时查看平台的'alloca'版本,以获取更可移植的解决方案,但您必须确保它们的行为方式相同,并具有相同的执行方式。 – 2011-12-31 10:58:56