C一维数组 - 数组下标的无效类型'int [int]'

时间:2016-04-12 12:40:10

标签: c arrays

我应该写一个带有两个参数的函数:number n 和一个 n 元素的数组。然后,该函数为数组中的每个参数赋值0。但是我一直收到这个错误:数组下标的无效类型'int [int]'。不知道我做错了什么。这是我的代码:

#include <stdio.h>

int a;
int zeros(int n, int arr);

int main () {

    printf("Input array size:\n");
    scanf("%d", &a);

    int array[a];

    zeros(a, array[a]);

    return 0;
}

int zeros(int n, int arr) {

    int i;
    for(i=0; i<=n; i++) {
        arr[i]=0;
    }
    return 0;   
}

2 个答案:

答案 0 :(得分:3)

您定义zeroes以接收int arr作为参数,然后将其作为数组处理。那不会奏效。使用:

int zeros(int n, int *arr) {

    int i;
    for(i=0; i<n; i++) {
        arr[i]=0;
    }
    return 0;   
}

还要注意i<n而不是i<=n,因为数组elemens是0 ... n-1。

main中,您现在必须将其称为:

   zeros(a, array);

答案 1 :(得分:0)

定义数组时,应提供整数常量。使用变量是非法的。此外,将数组传递给函数时,不要提供索引。数组的起始地址(未编制索引的数组名称)就像一个指针。