所以当我用编程语言c创建一个数组时,最初初始化为的所有元素是什么?例如,
char array[5];
创建一个包含5个元素的数组。最初的元素是什么?我打印出来的元素,但它似乎是随机的,所以它们是随机创建的,还是有一种方法可以制作它们?
答案 0 :(得分:3)
“最初的元素是什么”将取决于数组的定义位置和方式。
块范围中定义的自动数组将包含垃圾。同时,静态数组将用零初始化。
char a[5]; /* zeros */
int main()
{
static char b[5]; /* zeros */
char c[5]; /* garbage */
}
如果数组声明为struct成员,则上述规则适用于包含struct对象的定义。
答案 1 :(得分:2)
这取决于你初始化它们的位置。
答案 2 :(得分:1)
未初始化的数组(或任何未初始化的对象)的内容未确定。访问它们会调用未定义的行为。
NSComparisonResult
请注意,char a[5], b[5] = {1, 2, 3, 4, 5}, c[5] = {42};
printf("%d\n", a[1]); // UB
printf("%d\n", b[1]); // 2
printf("%d\n", c[1]); // 0
个对象或全局范围对象具有默认的零初始化。