繁体   English   中英

如何在C中创建全局2d数组

[英]how to create a global 2d array in C

global.h:

extern char ** map_stage;

global.c: 这里出现错误C2099-初始化不是常量

char ** map_stage=create2DCharArray(map_height,map_length*map_length);

函数create2DCharArray:

char ** create2DCharArray(int m, int n)
{ 
int i;
char** array;  
array = (char**) malloc(n*sizeof(char*));  
for (i = 0; i < n; i++) 
   array[i] = (char*) malloc(m*sizeof(char));  
return array;
}

我如何使它工作? 俗话说“错误C2099” ...我需要一个全局动态2D数组!

感谢大伙们!

map_stage是全局变量,因此其初始值设定项应为常数。 您可以创建一个初始化函数来执行此操作。

/* global.c */

void init(void)
{
  map_stage = create2DCharArray(map_height, map_length * map_length);
}

另外,请注意,您的free是无法获得的。

错误C2099的意思是“初始化程序不是常量”,这使我相信您已经在全局范围内(即,在任何函数之外)编写了map_stage声明。 那不是有效的C ++。

您可以在此处放置变量的定义,但是您需要通过函数调用对其进行初始化,因为初始化器不是编译时间常数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM