我正在创建一个数组表,用户可以在其中输入值,我将向他们显示值表,只是用0
号来退出scanf
< / p>
所以我不希望数字0
存储在数组
但我看到数字0
为数组的下一个值,所以我想知道0
是否是数组的默认值。
使其更清晰
让用户输入;
5 4 3 2
和0
所以我想在程序输出中显示的是
5 4 3 2 1
我使用数组来显示索引0-4 [1-5]
但只是为了确保数字0
不存储,所以我调用数组[5]来查看下一个值是0
还是其他值,它总是显示0
所以我想知道是否有办法确保0
不会存储在数组中
这是我用来确保
的 if(enter != 0){
array[i - 1] = enter;
很抱歉,如果我的问题很复杂。
由于
答案 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
或充满废话。