【发布时间】:2022-01-09 19:28:37
【问题描述】:
我有这个代码:
#include <stdio.h>
int main()
{
int arr2[5];
arr2[0] = 0;
arr2[1] = 1;
arr2[2] = 2;
arr2[3] = 3;
int arr3[5] = {1, 2, 3, 4};
}
当我打印每个数组的第五个位置时,我会得到不同的结果:
printf("Fifth: %d\n", arr2[4]); // Prints Random number
printf("Fifth: %d\n", arr3[4]); // Prints Zero!
输出:
Fifth: -858993460
Fifth: 0
我知道第一个是指向内存中第五个位置的指针,第二个是数组初始化为 0 的方式。 我不明白他们为什么给我 2 个不同的值。在这两种情况下,我都将数组的大小设置为 5;为什么会这样?
【问题讨论】:
-
{}实际上初始化了所有数组成员,而留下arr2[5]只是分配而不初始化。您正在访问一个未定义的数组成员,这是未定义的行为。