考虑C函数
int largest(int list[], int n, int l);
list
是n
整数的列表。l
是函数的临时空间该函数应该返回数组n
中list
整数列表中的最大整数。
int largest(int list[], int n, int l) {
int i;
for(i=0; i<n; i++) {
if(list[i] > l) {
l = list[i];
}
}
return l;
}
为什么这个函数有时会返回坏数据?
答案 0 :(得分:2)
在我看来,您正在尝试打印值l
,但实际上并未存储函数的返回值。您也不需要将l
作为参数传递给您的函数。
请改为:
// Declare the function prototype without int l.
int largest(int list[], int n);
// Actual function that searches for largest int.
int largest(int list[], int n)
{
int i;
int l = list[0]; // Point to first element.
// Notice loop starts at i = 1.
for(i = 1; i < n; i++)
{
if(list[i] > l)
l = list[i];
}
return l;
}
然后你在哪里调用你的函数:
int l = largest(list, n);
上面的代码只是确保您存储函数返回的值。
答案 1 :(得分:0)
您永远不会初始化l
,因此如果列表中的所有项都不大于它,它将返回此值的现有值。如果你从未在调用函数中初始化它,那么行为是未定义的,这将解释你的错误数据&#34;。