【发布时间】:2019-12-06 03:50:48
【问题描述】:
我对未初始化的数组感到困惑。每当我初始化像这样int array[10]; 的数组时,不应用任何值,然后打印这个未初始化的数组。该数组的第一个元素将始终是垃圾值(例如 printf("%d",array[0]); 将是一些垃圾值)。但其他值,例如从array[1] 到array[10] 将默认初始化为zero(0)。
谁能解释为什么?
【问题讨论】:
-
int array[10];这定义了一个数组,但绝不会初始化它(假设它不是全局/静态变量)。 “但其他值,例如从 array[1] 到 array[10] 将默认初始化为零(0)”。不,他们不会。访问未初始化的变量是未定义的行为,仅仅因为你看到 0 并不意味着它永远是 0。 -
另外,请注意您为问题使用的标签。仅使用相关的语言标签。例如,不清楚为什么
python用于这个问题。 -
Re "其他值,例如从数组[1] 到数组[10]",
int array[10];中没有array[10]。访问array[10]是未定义的行为。数组索引是偏移量,所以对于int array[10];,它们从 0 到 9
标签: c arrays computer-science garbage