数组的默认值是多少?

时间:2011-11-11 19:38:03

标签: c arrays

我正在创建一个数组表,用户可以在其中输入值,我将向他们显示值表,只是用0号来退出scanf < / p>

所以我不希望数字0存储在数组

但我看到数字0为数组的下一个值,所以我想知道0是否是数组的默认值。

使其更清晰

让用户输入;

5 4 3 2

1

0

所以我想在程序输出中显示的是

5 4 3 2 1

我使用数组来显示索引0-4 [1-5]

但只是为了确保数字0不存储,所以我调用数组[5]来查看下一个值是0还是其他值,它总是显示0所以我想知道是否有办法确保0不会存储在数组中

这是我用来确保

if(enter != 0){

array[i - 1] = enter;

很抱歉,如果我的问题很复杂。

由于

3 个答案:

答案 0 :(得分:4)

如果数组具有静态存储持续时间,则它将被初始化为0.在任何其他情况下,元素将不会被初始化,即将包含随机位。

静态存储持续时间具有全局变量,文件范围静态变量和块范围静态变量。

答案 1 :(得分:1)

我摒弃了我的回答。您分配的每个数组都可以包含垃圾。编译器可以为您清除它。在你的情况下,我会用-1之类的东西清除数组。否则你会有一些未定义的值,即0或不是。它只是没有定义,每个编译器都可以表现不同。

测试它:

#include <stdio.h>


void array(void);

int main(void) {
    int c[10], i;
    printf("Array 1: ");
    for(i = 0; i < 10; i++) {
        printf("%d", c[i]);
    }

    printf("\n");
    array();
    int b[10];
    for(i = 0; i < 10; i++) {
        printf("%d ",b[i]);
    }

    printf("\n");

    return 0;
}

void array(void) {
    int a[10] = {1,2,3,4,5,6,7,8,9,0};
    return;
}

答案 2 :(得分:1)

这取决于,但通常在编译时定义的数组默认为0。在运行时定义的数组不一定,它们可能是0或充满废话。