如果我创建一个数组:
int number[10];
for(i=0;i<7,i+=1)
{
cin>>number[i];
}
那么number[j]
中存储的值是什么,j=8,9
。
如果存储了某些值,为什么以及如何存储这些值?
答案 0 :(得分:2)
答案取决于阵列的存储持续时间。
如果在声明数组时所有元素都为零,则它具有静态存储持续时间。
int number[10];
如果数组具有在函数中声明的自动存储持续时间而没有指定符static
或extern
,而其所有元素都具有不确定的值。
答案 1 :(得分:1)
它们未初始化,意味着可能存储任何数字,并且您不应该依赖它们的价值。
某些编译器/系统在调试模式下运行时可能会在其中写入零或某些模式,但您绝不应该依赖它。
答案 2 :(得分:0)
数字[8]和数字[9]的值将被称为“垃圾”值,这意味着它可以是该位置当前存在的任何数字。
但是,如果使用部分初始化初始化数组:
int number[10] = {1, 2, 3, 4, 5, 6, 7, 8};
然后最后2个元素将为0。
答案 3 :(得分:0)
现代软件加载程序在将其转移给它们之前清除进程内存的各个部分。在这种情况下,值将为零。
但是,如果您是交叉编译,则不能假设外部加载程序将这些位置零。在使用变量之前,始终为变量赋值(即使您没有进行交叉编译)。