c - C中如何让用户指定多维数组的大小

标签 c arrays

正如标题所说。无论如何,是否允许用户在 C 中指定二维数组的两个参数?该数组将被调用到函数并在函数内更改。

函数至少需要第二个参数作为数组的大小,我不想为数组的大小指定一个任意大的数字。

我应该指出,我是一个非常新的 C 程序员,而且我对 C 总体上知之甚少。如果您向我展示了一个全新的概念并且我问了很多关于它的问题,请不要生气!

最佳答案

是的,从 C99 开始你可以写:

void func(int rows, int cols, int array[rows][cols])
{
// stuff...
}

并调用它:

int main()
{
    int c = rand() % 10 + 1;
    int arr1[6][c];  func(6, c, arr1);
    int arr2[9][3]; func(9, 3, arr2);

    size_t large = 100000000;
    int (*arr3)[c] = malloc(sizeof(int[large][c]));
    func(large, c, arr3);
    free(arr3);
}

在 C11 中,出于政治原因,此功能被标记为“可选”,但是除 MSVC 之外的所有编译器都支持它。

关于c - C中如何让用户指定多维数组的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32598224/

相关文章:

C作业,暂时忽略(我想我稍后会用一些代码重新发布)

html - libxml2 HTML解析

ruby-on-rails - 排序多维数组,降序

c - 指向数组的 typedef 的指针

C - 子进程不执行

c - 我可以获得最简单的 getopt 程序?

c - posix_memalign 的警告隐式声明

c# - 从 xml 加载对象,在动态 UI 中编辑值并保存回 xml

javascript - 每次将 i 与 array.length 进行比较时,循环都会检查 array.length 吗?

java - 将测试库文件读入二维数组