繁体   English   中英

在函数中传递数组以求和其元素

[英]Passing array in function to sum its elements

我是 C 的新手。我正在尝试编写一小段代码,让用户可以输入 5 个整数。 它们被添加到一个数组中,并将该数组传入一个函数来求和它的所有元素。 但是我收到了一堆我不太明白的错误。

这是一段代码:

#include <stdio.h>

void main()
{
    int array[5];
    int index;
    int sum;
    //Function declaration.
    int sumArr(int arr[]);


    for (index = 0; index <= 4; index++)
    {
        printf("Please enter an integer: ");
        scanf("%d", &array[index]);
    }

    sum  = sumArr(array, 5);

    printf("The total sum of the integers contained in the array is: %d", sum);


//Function to summ the values sored in the array.

int sumArr(int arr[])
{
    int i;
    int sum = 0;

    for (i = 0; i < 4; ++i)
    {
        sum += arr[i];
    }
    return sum;
}
}

这是我编译时遇到的错误:我不明白为什么我会得到“'sumArr'的静态声明遵循非静态声明”,即使在声明了什么数据类型之后也是如此。

test3.c: In function ‘main’:
 test3.c:22:2: error: too many arguments to function ‘sumArr’
   sum  = sumArr(array, 5);
   ^
 test3.c:12:5: note: declared here
 int sumArr(int arr[]);
     ^
test3.c:31:6: error: static declaration of ‘sumArr’ follows non-static   declaration
  int sumArr(int arr[])
      ^
 test3.c:12:5: note: previous declaration of ‘sumArr’ was here
  int sumArr(int arr[]);
      ^

您的函数中没有第二个参数。 你应该做这个:

int sumArr(int arr[], int s)
{
    int i;
    int sum = 0;

    for (i = 0; i < s; ++i)
    {
        sum += arr[i];
    }
    return sum;
}

test3.c:22:2: 错误:函数“sumArr”的参数太多

这几乎可以告诉您问题是什么。 sumArr定义为

int sumArr(int arr[])
{
...
}

然而你试图用两个参数调用它:数组和整数 5。要解决这个问题,请将上面的函数更改为

int sumArr(int arr[], int variableName)
{
...
}

test3.c:31:6: 错误:'sumArr' 的静态声明遵循非静态声明

int sumArr(int arr[]);的函数原型(单行int sumArr(int arr[]);需要更改以匹配上述更改)和sumArr()定义(您实际提供函数代码的sumArr()当前都在main() . 将它们移到外面,将原型放在main()函数上方

你应该做这样的事情。

int sumArr( int arr[], int size );

您将 5 作为第二个参数传递。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM