我有这段代码:
#define N 100 //starting size of the array
int is_full(VERTEX *arr);
int add_vertex(char *name);
int print_degree(int ID);
int _get_vertex(int ID);
VERTEX *resize_array(VERTEX *vertex_array,int new_size);
VERTEX *arr = (VERTEX*)calloc(N, sizeof(VERTEX)); // dynamic allocation and initialization to NULL\0
int main(void)
{
int vertex_counter = 0 ;
int starting_size_of_array = sizeof(VERTEX)*N;
}
我收到错误: 错误C2099:初始化程序不是常量
我希望VERTEX数组是全局的 - 以便我可以在任何地方访问这个数组。 那怎么来不恒定呢? N在#define下,VERTEX在.h文件中有声明。
答案 0 :(得分:3)
首先,初始化不是常量。您需要在函数内初始化全局 - 例如main
:
VERTEX *arr;
int main(void)
{
arr = (VERTEX*)calloc(N, sizeof(VERTEX));
}
但是你应该首先使用全局变量,如果可以避免的话(通常是这样)。它破坏了你的代码设计。
答案 1 :(得分:0)
calloc()将返回的值不是常量。您可以将init arr设置为NULL,然后在程序启动期间将其初始化。