[英]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.