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

时间:2015-04-01 00:16:59

标签: 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 ar[4] = {3,6,9,12};
    int number = 4;

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

    return 0;
}

2 个答案:

答案 0 :(得分:1)

1)int arraySum(ar, number) - 在函数声明中,您必须提供参数类型。但你没有。
2)在main中,您尝试访问ar[4]ar是{{1}}的第五个元素,只有4个元素。

答案 1 :(得分:1)

这就是你的代码应该是这样的:

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

你可以在这里测试一下 http://codepad.org/a2dZzzsG

你完全忘了声明arraySum()参数的类型,所以编译器最初不知道会发生什么,然后你也尝试将ar [4]传递给函数,这不是一个有效的索引vor即使你有5个成员,也只是传递一个int值而不是整个数组。