面试题答案
一键面试-
数组
arr
中各元素的值:arr[0]
的值为1,因为初始化列表中第一个值为1,它会被赋值给数组的第一个元素。arr[1]
的值为2,初始化列表中第二个值为2,它会被赋值给数组的第二个元素。arr[2]
、arr[3]
、arr[4]
的值为0,因为在C语言中,对于不完整初始化的数组,剩余元素会被初始化为0。
-
不完整初始化规则:
- 当对数组进行初始化时,如果初始化列表中的元素个数小于数组的大小,那么剩余的元素将根据数组元素类型进行初始化。
- 对于具有自动存储期限(例如在函数内部定义的局部数组)且未初始化的对象,其值是未定义的。但在进行不完整初始化时,剩余元素会被初始化为0。
- 对于具有静态存储期限(例如用
static
修饰的局部数组或全局数组)的对象,若未初始化或部分初始化,未初始化的元素会被初始化为0。
例如:
// 自动存储期限的数组 void func() { int arr1[5] = {1, 2}; // arr1[0] = 1, arr1[1] = 2, arr1[2] = 0, arr1[3] = 0, arr1[4] = 0 } // 静态存储期限的数组 static int arr2[5] = {1, 2}; // arr2[0] = 1, arr2[1] = 2, arr2[2] = 0, arr2[3] = 0, arr2[4] = 0