我在C中宣布一个数组:
#include <stdio.h>
int main() {
int arr[5] = {1, 2, 3};
for (int i = 0; i < 5; i++) {
printf("%d ", arr[i]);
}
return 0;
}
i期望该数组在非初始化的位置完全初始化垃圾值或可能的一些随机数。但是,输出是:
1 2 3 0 0
chy为什么C自动用0填充其余元素,而不是使它们不可分化?
当局初始化规则
部分初始化有效?
0
,该标准可确保将初始化器列表中的任何丢失元素设置为零
等效的显式初始化将是:
int arr[5] = {1, 2, 3, 0, 0};
如果您根本不初始化怎么办?
如果您声明一个数组没有初始化,则是这样:
int arr[5]; // Uninitialized array
当局初始化填充了剩余的元素0
非字母化阵列包含
齿轮值
要明确零一个数组,请使用{0}
:
int arr[5] = {0}; // All elements set to 0