声明结构数组时出错

时间:2012-08-21 14:20:08

标签: c

我必须声明一个大小为16的结构数组。以下代码给出了一个错误 code1.c:12:1:错误:初始化元素不是常量

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

同样使用节点虚拟[26]给出了分段错误。我该怎么办?

3 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:4)

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

或者您可以将其声明为

node dummy[27];

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

答案 2 :(得分:0)

正如JRamos所说,使用 node dummy [25];

如果要访问第26个条目,因为offset / index从零开始。