C:结构的Vec
我想创建一个结构的vec。这是我的结构:C:结构的Vec,c,vector,struct,C,Vector,Struct,我想创建一个结构的vec。这是我的结构: typedef struct item { char *name; int acc; } *Item; 我试过: Item vec = (Item) malloc(sizeof(Item)*max); max是以前定义的。我得到这个错误:初始值设定项元素不是常量通过以下方式更改它: typedef struct item { char *name; int acc; } Item
typedef struct item {
char *name;
int acc;
} *Item;
我试过:
Item vec = (Item) malloc(sizeof(Item)*max);
max是以前定义的。我得到这个错误:初始值设定项元素不是常量
通过以下方式更改它:
typedef struct item {
char *name;
int acc;
} Item;
(无指针),然后执行sizeof(struct item)或sizeof(item)。然后
typedef结构项{…}*项
是个糟糕的主意。想想sizeof(Item)
做了什么,因为它是指针类型…@EugeneSh。我的评论之所以如此正确的原因之一是,错误消息与您发布的代码完全无关。如果您确实需要帮助,请发布代码。是的,局部变量可以通过函数调用初始化,但全局变量不能。全局变量只能用编译时常量初始化。如果max
是一个常量,那么vec
可以声明为一个数组:struct item vec[max]代码>。否则,您需要在确定max
的值后的某个时间点调用malloc
。一个始终有效的简单解决方案是sizeof(*vec)
。但是typedef
ing一个指针是有问题的。@iharob,同意你的说法。-看看这个问答,谢谢。我总是为马洛克做演员,但这是有道理的。
Item *vec = malloc(sizeof(Item) * max);