当前位置:首页 C++ > 正文

c++静态一维数组的各元素的默认初始值

作者:野牛程序员:2023-06-27 07:58:28 C++阅读 2773

在C++中,静态一维数组的各元素的默认初始值取决于数组的存储位置。具体情况如下:

  1. 1、全局静态数组:如果静态数组在全局作用域声明,而没有显式初始化,那么它的所有元素将被默认初始化。对于内置类型(如int、float等),它们的默认初始值为0。对于自定义类型(如类对象),将调用默认构造函数进行初始化。

  2. 2、局部静态数组:如果静态数组在函数内部的静态局部作用域声明,而没有显式初始化,那么它的所有元素也将被默认初始化。规则与全局静态数组相同。

  3. 3、局部自动数组:如果数组是在函数内部的自动变量(也称为局部变量)中声明的,那么它的元素将不会被默认初始化。它们的值将是未定义的(即垃圾值)。在使用这些元素之前,应该显式初始化它们。

以下是几个示例:

#include <iostream>

int globalArray[5]; // 全局静态数组

void myFunction() {
    static int localStaticArray[3]; // 静态局部数组
    int localArray[4]; // 自动局部数组

    for (int i = 0; i < 5; i++) {
        std::cout << globalArray[i] << " "; // 输出全局静态数组的元素(默认为0)
    }
    std::cout << std::endl;

    for (int i = 0; i < 3; i++) {
        std::cout << localStaticArray[i] << " "; // 输出静态局部数组的元素(默认为0)
    }
    std::cout << std::endl;

    for (int i = 0; i < 4; i++) {
        std::cout << localArray[i] << " "; // 输出自动局部数组的元素(未定义的值)
    }
    std::cout << std::endl;
}

int main() {
    myFunction();
    return 0;
}
输出结果:
0 0 0 0 0 
0 0 0 
-1792331272 32766 0 -1792256448

请注意,如果你在声明数组时显式提供了初始值,那么这些初始值将覆盖默认初始化。例如:

int myArray[3] = {1, 2, 3}; // 所有元素初始化为1、2、3

这里的myArray数组将不会使用默认初始化规则,而是使用显式提供的初始值。

野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
相关推荐

最新推荐

热门点击