在c中初始化数组时出现运行时错误

时间:2015-04-27 13:21:15

标签: c arrays

这是我初始化数组的代码:

#include <stdio.h>

int main (void) {
    int x, n;

    //            0  1  2  3  4   5   6   7   8   9   10  11  12  13  14  15
    int *array = {2, 4, 6, 9, 11, 13, 15, 17, 19, 21, 25, 29, 30, 34, 35, 38};
    n = sizeof(array) / sizeof(int);

    for (x=0; x<n; x++) {
        printf("%i: %i - ", x, array[x]);
    }

    printf("\nArray's length: %i", n);
    return 0;
}

我不明白为什么这个简单的代码shows this message

  

运行时错误

提前致谢。

3 个答案:

答案 0 :(得分:1)

将此更改为int *array =int array[] =。 Ideone链接:https://ideone.com/ULH7i6。另见:How to initialize all members of an array to the same value?

答案 1 :(得分:1)

当您宣布以下行时,您有什么想法?

int *array = {2, 4, 6, 9, 11, 13, 15, 17, 19, 21, 25, 29, 30, 34, 35, 38};

当我看到类似这样的东西时,你会想到使用指针算法来处理数组,这会产生很多有趣的面试问题(一般来说很酷):P)。另一方面,您可能只是习惯于使用数组文字创建数组。

下面介绍了您可能尝试使用的不同类型的数组。我知道你选择了一个答案,但如果你想要完成别的事情,这可能对你有用。

C pointer to array/array of pointers disambiguation

答案 2 :(得分:-2)

您的数组声明不正确....只需将您的声明编辑为

int *array[] = {2, 4, 6, 9, 11, 13, 15, 17, 19, 21, 25, 29, 30, 34, 35, 38};

这里是更正码!

#include <stdio.h>

int main (void) {
int x, n;

//            0  1  2  3  4   5   6   7   8   9   10  11  12  13  14  15
int *array[] = {2, 4, 6, 9, 11, 13, 15, 17, 19, 21, 25, 29, 30, 34, 35, 38};
n =sizeof(array) / sizeof(int);

for (x=0; x<n; x++) {
    printf("%i: %i - ",x,array[x]);
}

printf("\nArray's length: %i", n);
return 0;
}