在未分配某个元素的数组中存储了什么值?

时间:2018-02-27 12:54:20

标签: c++ arrays initialization declaration

如果我创建一个数组:

int number[10];
for(i=0;i<7,i+=1)
{
    cin>>number[i];
}

那么number[j]中存储的值是什么,j=8,9。 如果存储了某些值,为什么以及如何存储这些值?

4 个答案:

答案 0 :(得分:2)

答案取决于阵列的存储持续时间。

如果在声明数组时所有元素都为零,则它具有静态存储持续时间。

int number[10];

如果数组具有在函数中声明的自动存储持续时间而没有指定符staticextern,而其所有元素都具有不确定的值。

答案 1 :(得分:1)

它们未初始化,意味着可能存储任何数字,并且您不应该依赖它们的价值。

某些编译器/系统在调试模式下运行时可能会在其中写入零或某些模式,但您绝不应该依赖它。

答案 2 :(得分:0)

数字[8]和数字[9]的值将被称为“垃圾”值,这意味着它可以是该位置当前存在的任何数字。

但是,如果使用部分初始化初始化数组:

int number[10] = {1, 2, 3, 4, 5, 6, 7, 8};

然后最后2个元素将为0。

答案 3 :(得分:0)

现代软件加载程序在将其转移给它们之前清除进程内存的各个部分。在这种情况下,值将为零。

但是,如果您是交叉编译,则不能假设外部加载程序将这些位置零。在使用变量之前,始终为变量赋值(即使您没有进行交叉编译)。