【发布时间】:2019-08-19 18:23:21
【问题描述】:
我将有多个 2d int 数组..
int[5][5] A;
int[5][5] B;
int[5][5] C;
但我需要多少取决于运行时决定的参数。如何创建动态数量的二维数组并管理它们?
【问题讨论】:
标签: c multidimensional-array command-line-arguments definition
我将有多个 2d int 数组..
int[5][5] A;
int[5][5] B;
int[5][5] C;
但我需要多少取决于运行时决定的参数。如何创建动态数量的二维数组并管理它们?
【问题讨论】:
标签: c multidimensional-array command-line-arguments definition
在 C 语言中,您可以使用可变长度数组 (VLA)。所以你可以声明一个三维数组,它的左维将指定二维数组的个数。
例如
#include <stdlib.h>
int main( int argc, char * argv[] )
{
// some check that the command line parameter was specified
int a[atoi( argv[1] )][5][5];
}
【讨论】:
malloc() 等的动态内存分配;这也很麻烦(只要数组的总大小足够小以适合您的堆栈),VLA 在符号上非常方便。
你可以使用:
int* myArr = malloc(x_dim*y_dim*sizeof(int)); // malloc guarantees contiguous memory allocation
【讨论】: