c - 将多维数组传递给 C 中的函数

标签 c function pointers multidimensional-array

我正在尝试修改多维数组。这是我的功能代码 -

void rot90(int n,char **a)
{
  int i,j;
  int b[n][n];

  for(i=n-1;i>=0;i--)
  {
    for(j=0;j<n;j++)
    {
      a[n-1-i][j]=b[j][i];
    }
  }
  for(i=0;i<n;i++)
  {
    for(j=0;j<n;j++)
    {
      a[i][j]=b[i][j];
    }  
  }
}

在我的主函数中,我将其称为 - A 是一个 2d 数组 nxn。 rot90(n,A);

显示编译时出现以下错误 - 警告:从不兼容的指针类型传递“rot90”的参数 2 [默认启用] 注意:预期为“char **”,但参数类型为“char (*)[10]”

正确的做法是什么? 谢谢。

最佳答案

如果 A 是一个 NxN 数组,并且您使用的是 VLA(从您的代码片段来看),那么原型(prototype)必须是

 void rot90( int n, char (*a)[n] )

 void rot90( int n, char a[][n] )

 void rot90( int n, char a[n][n] )

后两种形式的解释与第一种相同; a 是指向 n 元素的 char 数组的指针。

关于c - 将多维数组传递给 C 中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26032821/

相关文章:

c - 如何传递指针并在堆上分配空间

c - 将 libpq-fe.h 添加到 qt 现有项目

c - 查找数组中最小元素索引的时间复杂度分析——最差、平均和最佳情况

python - 将函数的打印输出转换为列表

ios - Swift:UIButton 自定义

arrays - 迭代时更新 golang 数组

c - 如何获取基指针、栈指针和保存基指针的值

c - 从 C 中的数组读取时出现错误字符/符号

c - 如何用数学运算符打破长线?

c++ - 使字段函数通用