c - 将可变长度二维数组传递给函数

标签 c arrays function

如果我动态分配一个二维数组(malloc it),

int r,c;
scanf("%d%d",&r,&c);
int **arr = (int **)malloc(r * sizeof(int *));

for (i=0; i<r; i++)
     arr[i] = (int *)malloc(c * sizeof(int));

然后将其传递给原型(prototype)为的函数:

fun(int **arr,int r,int c)

没有问题。但是当我声明一个像 VLA 这样的二维数组时,即

int r,c;
scanf("%d%d",&r,&c);
int arr2[r][c];

当我试图将它传递给同一个函数时,它给我一个错误。为什么会这样? 有什么方法可以将第二个二维数组 (arr2) 传递给函数吗?

我知道有很多类似的问题,但我没有找到解决相同问题的问题。

最佳答案

一维数组衰减为指针。但是,二维数组不会衰减为指向指针的指针。

当你有

int arr2[r][c];

并且你想用它来调用一个函数,这个函数需要被声明为:

void fun(int r, int c, int arr[][c]);

并调用它

fun(r, c, arr2);

关于c - 将可变长度二维数组传递给函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31870266/

相关文章:

php - 区分关联数组和常规数组

c - Mpi函数定义

java - 如何使用 docx4j 阅读 word 文档并获取所有样式的部分内容

c - 底数大于10的C扫描

c++ - 当第一行完成时井字游戏不会结束

C函数调用问题

c++ - C/C++ - 牛顿法的迭代计数器

c - 函数返回-1.#IND00 + 合并函数

c - 程序没有错误但是还是崩溃

c - 将类似 bash 的小部件插入 gtk