我必须声明一个大小为16的结构数组。以下代码给出了一个错误 code1.c:12:1:错误:初始化元素不是常量
typedef struct node
{
int tokenvalue;
struct node *next;
char *n;
} node;
node *dummy=(node *)malloc(26*sizeof(node));
同样使用节点虚拟[26]给出了分段错误。我该怎么办?
答案 0 :(得分:6)
您无法使用非编译时常量的任何内容初始化具有静态存储的对象。保持未初始化状态,并在函数中为其分配一些内存。
答案 1 :(得分:4)
尝试在main()
函数中初始化它,因为无法使用非常量值或在编译时无法确定的值初始化全局变量。
或者您可以将其声明为
node dummy[27];
作为全局变量,而不必使用malloc(如果大小是常量)。
答案 2 :(得分:0)
如果要访问第26个条目,因为offset / index从零开始。