我刚刚创建了一个大小为10的数组
int array[10];
Run Code Online (Sandbox Code Playgroud)
之后我想检查数值
for(int i = 0; i < 10; i++){
printf("%d\n", array[i]);
}
Run Code Online (Sandbox Code Playgroud)
但产量与我的预期不同.我虽然所有值都应为0,但输出结果如下:
1996260900
1
0
1995115336
78836
78796
0
68600
0
0
Run Code Online (Sandbox Code Playgroud)
这是为什么?
提前致谢!
Som*_*ude 10
未初始化的本地和非静态变量(数组与否)的内容是不确定的,看起来几乎是随机的.不要试图使用这些值.
如果要初始化值,则需要明确地执行此操作,如
int array[10] = { 0 }; // Will initialize all elements to zero
Run Code Online (Sandbox Code Playgroud)
然后有点挑剔你使用术语"空"和数组:数组永远不会 "空".如果您定义了一个包含十个元素的数组,那么它将始终具有十个元素.
请记住,C没有任何"空值"概念.一切都有一个值,可能由你初始化或设置,或者它是未初始化的,在这种情况下,值是不确定的.
来自C标准#6.7.9p10:
如果未显式初始化具有自动存储持续时间的对象,则其值不确定.
要初始化数组的所有元素0,您可以执行以下操作:
int array[10] = {0};
Run Code Online (Sandbox Code Playgroud)
int具有静态或线程存储持续时间且未显式初始化的类型对象初始化为zero.所以,你可以期望所有的数组元素的值array是0只有在情况下,如果有静态存储期限,否则数组的元素的值array将是不确定的,你必须有明确的初始化它们0.
| 归档时间: |
|
| 查看次数: |
254 次 |
| 最近记录: |