我正在尝试访问多维数组中的特定行,因此它的行为就像以下程序中的 vector 一样,查找 vector 中的最高值:
int getMax(int V[], int i){
if(i<0){
return V[0];
}
else{
return max(V[i], getMax(V, i-1));
}
下列错误的是
passing arugment to parameter 'a' here
#define N 3
#define M 2
int array_print_max(int a[N][M], int i , int j) // error is in this line.
{
if(i<0)
{
return a[j][0];
}
else
{
return max(a[j][i], array_print_max(a[j][i-1], i-1 , j));
}
}
在这两种情况下,最大函数是:
int max(int a, int b)
{
if (a > b)
{
return a;
}
else
{
return b;
}
}
主要是
int main()
{
int a[3][2] = { {0,4,2}, {1,2,3} };
}
为什么array_print_max
函数不编译?
最佳答案
我收到以下警告:
main 中的元素过多:
int a[3][2] = { {0,4,2}, {1,2,3} };
应该是:
int a[2][3] = { {0,4,2}, {1,2,3} };
传递“int”的整数到指针转换不兼容:
return max(a[j][i], array_print_max(a[j][i-1], i-1 , j));
也许这应该是:
return max(a[j][i], array_print_max(a, i-1 , j));
这是因为原型(prototype)需要一个数组数组,但 a[j][i-1]
是一个 int
。
当然,我收到了关于 main
中未使用变量“a”的警告。
int array_print_max(int a[N][M], int i , int j)
在int a[N][M]
中,这里的第一个值N
被忽略。但它通常不会引发编译错误。此外,我们更改了数组维度,因此以下内容不会产生误导:
int array_print_max(int a[][N], int i , int j)
关于c - 使用c中多维数组中的行的递归函数中的语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41934693/