【发布时间】:2013-11-30 11:49:29
【问题描述】:
#include <stdio.h>
#include <stdlib.h>
int second_smallest(int &A[m][n], m, n);
int main()
{
int m, n;
do{
scanf("%d %d", &m, &n);
}while(((m < 1) || (m > 5)) && ((n < 1) || (n > 5)));
int A[m][n], i, j;
for(i = 0; i < m; i++)
for(j = 0; j < n; j++)
scanf("%d", &A[i][j]);
printf("Second smallest number in the two dimensional array is %d", second_smallest(A[m][n], m, n));
return 0;
}
int second_smallest(int &A[m][n], m, n){
int i, j, min, second_min;
if (A[0][0] > A[0][1]){
min = A[0][0];
second_min = A[0][1];
}
else{
min = A[0][1];
second_min = A[0][0];
}
for (int i = 0;i < m; i++)
for (int j = 0; j < n; j++){
if (A[i][j] <= min)
second_min = min;
min = A[i][j];
}
else if (A[i][j] > second_min){
second_min = A[i][j];
}
}
我正在编写一个函数来查找二维数组中的第二小数,但我在声明该函数时遇到了问题。
它给了我以下几行的错误:
int second_smallest(int &A[m][n], m, n);
和
int second_smallest(int &A[m][n], m, n){
错误说明如下:
error: expected ';', ',', or ')' before '&' token.
对于这一行的一个警告:
printf("Second smallest number in the two dimensional array is %d", second_smallest(A[m][n], m, n));
说:
warning: implicit declaration of function 'second_smallest'
【问题讨论】:
-
C 没有引用。
-
警告是因为第一个错误。在 C(以及从 C 派生的语言)中,有一个根错误是很常见的,这会导致其他错误和/或警告。
-
您还会遇到其他错误(或者在修复第一个错误时至少会遇到其他错误):当您声明
A参数时,变量m和n未声明。 -
您也没有正确调用该函数,而不是传递数组的arrays-of-int
A而是传递单个整数值A[m][n],这也在边界之外A.
标签: c function multidimensional-array