我正在尝试修改多维数组。这是我的功能代码 -
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
是一个 N
xN
数组,并且您使用的是 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/