我对未初始化的数组感到困惑。每当我初始化这样的int array[10];
数组时,不应用任何值,然后打印此未初始化的数组。该数组的第一个元素将始终为垃圾值(例如printf("%d",array[0]);
将为垃圾值)。但是默认情况下,其他值(例如,从array[1]
到array[10]
将被初始化为zero(0)
。
谁能解释为什么?
我对未初始化的数组感到困惑。每当我初始化这样的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时,array [10]越界。
https://docs.microsoft.com/en-us/cpp/cpp/arrays-cpp?view=vs-2019
如果您未分配默认值,则每个元素最初将包含该位置碰巧的任何随机值。