C 编程中的未初始化数组



我对未初始化的数组感到困惑。每当我初始化这样的数组时int array[10];,并且不应用任何值,然后打印这个未初始化的数组。这个数组的第一个元素将永远是一个垃圾值(就像printf("%d",array[0]);将是一些垃圾值(。但其他值(例如从array[1]array[10](将默认初始化为zero(0)

谁能解释为什么?

int array[10]; // defined, not initialized
int array[10]={1,2,3,4,5,6,7,8,9,0}; // defined and initialized

基于堆栈的数组 - array[1] 为 0 只是一个随机的巧合。除非显式清零,否则这些值是未定义的。顺便说一句,当数组的大小为 10 时,数组 [10] 是越界的。

https://learn.microsoft.com/en-us/cpp/cpp/arrays-cpp?view=vs-2019

如果不分配默认值,则每个元素最初将包含恰好位于该位置的任何随机值。

最新更新