【发布时间】:2011-09-17 17:39:55
【问题描述】:
我无法从 2 个变量创建 2D 数组(例如 int arr[i][j] 不允许),那么如何创建动态大小的 2D 数组?
数组的维度只有在我的程序运行时才知道。该数组用于表示一个网格。我将如何在 C 中编写代码?
【问题讨论】:
-
C99 允许您声明 VLA - 可变长度数组 - 因此,如果您有 C99 编译器并且对您的工作没有人为(家庭作业)限制,您可以精确地编写
int arr[i][j];。 (如果您没有 C99 编译器,那么该买一个了。)话虽如此,您打算如何访问该数组?您可以希望使用arr[i][j]来访问一个元素,或者您可以准备使用像arr[i*n+j]这样的计算来访问它。这两种情况所需的内存分配模式完全不同。