看下面的代码:
int arr[4];
for (int index = 0; index < 4; ++index) {
printf("%d\t", arr[index]);
}
它打印随机值,如下所示:
27224 -6784 32766 0
但是当我将
arr
设置为 {}
时,它会打印零。int arr[4] = {};
for (int index = 0; index < 4; ++index) {
printf("%d\t", arr[index]);
}
0 0 0 0
为什么?
最佳答案
默认情况下,数组元素未初始化,这意味着它们将包含垃圾值:
int arr[4];
使用花括号初始值设定项,您可以显式设置初始值,例如
int arr[4] = {1, 2, 3, 4};
但是如果大括号中的数字数量小于数组的长度,则其余部分用零填充。这就是在这种情况下发生的事情:
int arr[4] = {};
请注意,这是 C 中的 not valid,仅在 C++ 中,但您的编译器显然允许它。在标准 C 中,您必须至少编写一个值:
int arr[4] = {0};
关于c - C语言中 "int arr[] = {}"和 "int arr[]"的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60883363/