在c中对多维数组使用extern



我有一堆多维数组,它们在不同源文件的局部函数中分配,但我想使它们成为全局的。我正在考虑使用extern,根据这个问题,我需要制作一个头文件,其中包括声明我的变量,然后定义该变量,只有一次,在一个源文件内。

但是,我用来生成多维数组的方法在一行中声明和定义变量,如下所示:

float (*data0)[224][3] = calloc(224, sizeof *data0);

是否有一种方法,我可以把它分成声明和定义,以便我可以使用这个方法,或者是更好的只是在头文件本身做这两个?


我正在用C语言实现一个神经网络,我在多个地方定义了很多数组。一开始我不认为我以后会需要它们,而且这应该在有内存限制的嵌入式系统中运行,所以我把这些数组都放在本地,并尽快在它们上使用free

但事实证明,我将需要它们来训练这个网络,所以我需要它们是全局的,这样它们就可以在函数的多次迭代中保存它们的值。另外,我不知道我们将要使用的系统会附带一个64MB的DRAM,所以内存限制不是一个大问题。

如果全局定义这些数组,则不需要动态分配内存。与堆栈空间不同,全局变量的大小没有实际限制。

假设你想要一个尺寸为224,224和3的3D数组,定义如下:

float data0[224][224][3];

然后在头文件中声明为:

extern float data0[224][224][3];

而且,全局变量默认为零初始化,因此不需要显式初始化。

相关内容

  • 没有找到相关文章

最新更新