C 尝试访问数组元素:下标值不是数组、指针或向量

C 尝试访问数组元素:下标值不是数组、指针或向量,c,arrays,C,Arrays,我试图编写一个函数,将数组中的元素相加。不幸的是,每次尝试访问数组元素时,在编译时都会收到上面提到的错误消息。发生了什么事 #include <stdio.h> int arraySum(ar, number) { int x = 0; int i; for (i = 0; i < number; i++) { x += ar[i]; } return x; } int main (void) { int a

我试图编写一个函数,将数组中的元素相加。不幸的是,每次尝试访问数组元素时,在编译时都会收到上面提到的错误消息。发生了什么事

#include <stdio.h>

int arraySum(ar, number) {
    int x = 0;
    int i;
    for (i = 0; i < number; i++) {
        x += ar[i];
    }
    return x;
}


int main (void) {
    int ar[4] = {3,6,9,12};
    int number = 4;

    printf("The sum is %i",arraySum(ar[4], number));

    return 0;
}
#包括
内部阵列(ar,数字){
int x=0;
int i;
对于(i=0;i
1)
int-arraySum(ar,number)
-在函数声明中,必须提供参数的类型。但你没有。

2) 在
main
中,您试图访问
ar[4]
,这是
ar
的第五个元素,它只有4个元素。

这就是您的代码应该是什么样子:

#include <stdio.h>

int arraySum(int ar[], int number) {
    int x = 0;
    int i;
    for (i = 0; i < number; i++) {
        x += ar[i];
    }
    return x;
}


int main (void) {
    int ar[4] = {3,6,9,12};
    int number = 4;

    printf("The sum is %i",arraySum(ar, number));

    return 0;
}
#包括
int arraySum(int-ar[],int-number){
int x=0;
int i;
对于(i=0;i
你可以在这里测试


您完全忘记了声明arraySum()参数的类型,所以编译器一开始不知道应该期望什么,然后您还尝试将ar[4]传递给函数,该函数不是数组的有效索引,即使有5个成员,也只传递一个int值而不是整个数组。

int-arraySum(ar,number){
-->
int-arraySum(int-ar[],int-number){
arraySum(ar[4],number)
-->
arraySum(ar,number)
我喜欢这样做,因为它将纠错的工作留给了OP,这意味着对于OP来说,学习经验将更加宝贵和难忘。