看下面的代码:
int arr[4];
for (int index = 0; index < 4; ++index) {
printf("%d\t", arr[index]);
}
它打印随机值,如下所示:
27224 -6784 32766 0
但是当我设置arr
to {}
,它打印零。
int arr[4] = {};
for (int index = 0; index < 4; ++index) {
printf("%d\t", arr[index]);
}
0 0 0 0
Why?
默认情况下,数组元素未初始化,这意味着它们将包含垃圾值:
int arr[4];
使用大括号初始值设定项,您可以显式设置初始值,例如
int arr[4] = {1, 2, 3, 4};
但如果大括号中的数字数量小于数组的长度,则其余部分将用零填充。这就是本例中发生的情况:
int arr[4] = {};
请注意,这是无效 https://en.cppreference.com/w/c/language/array_initialization在 C 中,仅在 C++ 中,但你的编译器显然允许它。在标准 C 中,您必须至少写入一个值:
int arr[4] = {0};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)