【发布时间】:2014-11-19 21:16:35
【问题描述】:
我正在尝试修改多维数组。这是我的功能代码-
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 是一个二维数组 nxn。 rot90(n,A);
在编译时显示以下错误 - 警告:从不兼容的指针类型传递“rot90”的参数 2 [默认启用] 注意:预期为“char **”,但参数类型为“char (*)[10]”
什么是正确的方法? 谢谢。
【问题讨论】:
-
你能告诉我们
A的定义吗? -
我想这只是一个重现问题的例子,但仍然:你在这里使用
buninitialized。至少memset将其归零,或者添加评论或其他内容,以避免关于 UB 的 cmets :-) -
您正在传递指向函数的指针,但需要指向指针的指针
-
试试
rot90(n,(char **)A);。 -
将
void rot90(int n,char **a)更改为void rot90(int n,char a[][10])
标签: c function pointers multidimensional-array