【发布时间】:2013-07-05 21:07:58
【问题描述】:
您好,我是C编程语言的初学者,最近开始学习数组,我研究了默认情况下,int数组中的所有值都是垃圾。
那为什么我在这两种情况下得到不同的值。
案例一
int arr[5];
在这种情况下,从 arr[0] 到 arr[4] 我们将有垃圾值,但在下一种情况下。
案例 2
int arr[5] = {1};
在这种情况下,arr[0] 的值为 1,而从 arr[1] 到 arr[4] 的剩余部分的值为 0。
我的问题是,如果在 case-1 中每个未初始化的数组位置都有垃圾值,那么为什么在 case-2 中剩余的未初始化数组位置的默认值是 0。
【问题讨论】:
-
因为标准规定,当您初始化任何数组元素时,所有剩余未显式初始化的元素都会被初始化,就好像它们具有静态存储持续时间一样。这是标准规定的。
-
出于好奇:您是在全局范围内(即作为静态变量)还是在函数内声明此变量?如果在函数内部,那么您的垃圾值是因为数组是在堆栈上声明的。
-
@PP。我在函数中声明这些数组变量......
-
即使在任何 C 书籍(数组章节)中,您都可以得到这个“为什么”的答案。
标签: c arrays array-initialization