【问题标题】:How do I properly create an array of 2d int arrays in C?如何在 C 中正确创建 2d int 数组的数组?
【发布时间】: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


【解决方案1】:

在 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];
}

【讨论】:

  • 所以本质上 a[0][5][5] 和 a[1][5][5] 是 A[5][5] 和 B[5][5] ?跨度>
  • 太棒了,我很感激。这是在 C 中处理此问题的常用方法吗?
  • @Jordan H 我不知道这是否是一种常见的方式。我刚才想到了这个主意。您的编译器必须支持 C99。
  • @JordanH:直到运行时才知道需要多少个数组是一个相当不寻常的要求;弗拉德的建议和你能得到的一样好。另一种方法是使用malloc() 等的动态内存分配;这也很麻烦(只要数组的总大小足够小以适合您的堆栈),VLA 在符号上非常方便。
  • 您应该检查是否指定了命令行参数;否则,程序将给出分段错误。
【解决方案2】:

你可以使用:

int* myArr = malloc(x_dim*y_dim*sizeof(int)); // malloc guarantees contiguous memory allocation

【讨论】:

    猜你喜欢
    • 2021-10-04
    • 2014-03-17
    • 2011-06-19
    • 1970-01-01
    • 2016-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    相关资源
    最近更新 更多