MST

星途 面试题库

面试题:C语言一维数组不完整初始化情况分析

在C语言中,有如下代码:`int arr[5] = {1, 2};` 请详细说明数组`arr`中各个元素的值是如何确定的,并解释不完整初始化的规则。
42.5万 热度难度
编程语言C

知识考点

AI 面试

面试题答案

一键面试
  1. 数组arr中各元素的值

    • arr[0]的值为1,因为初始化列表中第一个值为1,它会被赋值给数组的第一个元素。
    • arr[1]的值为2,初始化列表中第二个值为2,它会被赋值给数组的第二个元素。
    • arr[2]arr[3]arr[4]的值为0,因为在C语言中,对于不完整初始化的数组,剩余元素会被初始化为0。
  2. 不完整初始化规则

    • 当对数组进行初始化时,如果初始化列表中的元素个数小于数组的大小,那么剩余的元素将根据数组元素类型进行初始化。
    • 对于具有自动存储期限(例如在函数内部定义的局部数组)且未初始化的对象,其值是未定义的。但在进行不完整初始化时,剩余元素会被初始化为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