C 使用函数来查找数组元素的和,我得到的是垃圾值
我编写了一个代码,用于使用函数查找数组元素的和。我写了下面提到的这样的文章。我得到一个垃圾值作为输出C 使用函数来查找数组元素的和,我得到的是垃圾值,c,C,我编写了一个代码,用于使用函数查找数组元素的和。我写了下面提到的这样的文章。我得到一个垃圾值作为输出 #include<stdio.h> int fact(int n, int i) { int sum = 0, arr[100]; for (i = 0; i < n; i++) { sum = sum + arr[i]; } return sum; } int main() { int n, arr[100], i;
#include<stdio.h>
int fact(int n, int i) {
int sum = 0, arr[100];
for (i = 0; i < n; i++) {
sum = sum + arr[i];
}
return sum;
}
int main() {
int n, arr[100], i;
scanf("%d", &n);
for (i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
int sum = fact(n, i);
printf("%d", sum);
return 0;
}
将数组arr传递给函数,而不是在事实中重新声明它
PS:将函数名更改为有意义的名称,如arrSum
代码:
问题:fact主要如何知道arr?实际上,未初始化数组arr的内容是什么?为什么我将本地迭代器变量作为参数传递给fact?Lemme check并将更新您我打赌如果您在编译时启用了一组健康的警告-Wall-Wextra for gcc和clang,您可能会得到一些有用的反馈…是的,得到了答案。int factint arr[100],int n。需要更改函数prototypemain时,应检查n的值,以确保它不大于声明的数组大小。N
#include<stdio.h>
int arrSum (int arr[], int n) {
int i, sum = 0;
for (i = 0; i < n; i++) {
sum = sum + arr[i];
}
return sum;
}
int main() {
int n, arr[100], i;
scanf("%d", &n);
if(n < 0 || n > 100)
return -1;
for (i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
int sum = arrSum(arr, n);
printf("%d ", sum);
return 0;
}