1

我必须声明一个大小为 16 的结构数组。以下代码给出错误 code1.c:12:1: error: initializer element is not constant

typedef struct node 
{
int tokenvalue;
struct  node *next;
char *n;
} node;
node *dummy=(node *)malloc(26*sizeof(node));

也使用 node dummy[26] 给出分段错误。我该怎么办?

4

2 回答 2

6

您不能使用任何非编译时常量初始化具有静态存储的对象。让它保持未初始化并在函数中为其分配一些内存。

于 2012-08-21T14:21:18.693 回答
4

尝试在您的main()函数中初始化它,因为您无法使用非常量值或无法在编译时确定的值初始化全局变量。

或者,您可以将其声明为

node dummy[27];

作为全局变量,而不必使用 malloc(如果大小是恒定的)。

于 2012-08-21T14:23:30.937 回答