Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 使用函数来查找数组元素的和,我得到的是垃圾值_C - Fatal编程技术网

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;
}