我在将二维数组传递给函数的c程序中出错。错误如标题中所述。我正在使用visual studio 2015。
#include<stdio.h>
#include<math.h>
int main()
{
int display(int*, int, int);
int a[3][4] = {
1, 2, 3, 4,
5, 6, 7, 8,
9, 0, 1, 6
};
display(a, 3, 4);
}
int display(int *q, int row, int col)
{
int i,j;
for (i = 0; i <= 2; i++)
{
for (j = 0; j <= 3; j++)
printf("%d", *(q + i*col + j));
printf("\n");
}
printf("\n");
}
答案 0 :(得分:0)
在这一行的背景下
display(a, 3, 4);
a
的类型为int [3][4]
(数组类型),它衰减为int (*)[4]
(指向数组第一个元素的指针),int *
不是匹配它。
您需要相应地调整函数签名/调用,即
int (*)[4]
并相应地使用它。也就是说,看到缺少的return
语句和函数调用的使用,您可以安全地将函数的返回类型更改为void
。
答案 1 :(得分:-1)
将 a 投射到(int *)a ,如下所示:
display( (int*) a, 3, 4 );