C++ 数组的初始化

在 C++ 中,数组的初始化方式会根据数组维度(一维或多维)有所不同。以下是详细的初始化方法及示例:


一、一维数组初始化

1. 静态初始化(声明时直接赋值)

cpp

// 完全初始化
int arr1[5] = {1, 2, 3, 4, 5}; 

// 部分初始化(剩余元素自动填充为 0)
int arr2[5] = {1, 2}; // [1, 2, 0, 0, 0]

// 自动推断数组长度
int arr3[] = {1, 2, 3}; // 编译器自动推断长度为 3
2. 字符数组的特殊初始化

cpp

// 用字符串字面量初始化(自动添加 '\0')
char str1[] = "Hello"; // 长度 = 6('H','e','l','l','o','\0')

// 显式初始化字符数组
char str2[5] = {'H', 'e', 'l', 'l', 'o'}; // 注意:没有 '\0'
3. 统一初始化(C++11 及以后)

cpp

int arr4[] {10, 20, 30}; // 省略等号

二、多维数组初始化

多维数组可以视为“数组的数组”。常用初始化方式如下:

1. 完全显式初始化

cpp

int matrix1[2][3] = {
    {1, 2, 3},  // 第一行
    {4, 5, 6}   // 第二行
};
2. 部分初始化

未显式初始化的元素会被自动填充为 0

cpp

int matrix2[2][3] = {
    {1},        // 第一行:[1, 0, 0]
    {2, 3}      // 第二行:[2, 3, 0]
};
3. 省略第一维长度

编译器可以自动推断第一维的长度:

cpp

int matrix3[][3] = {
    {1, 2, 3},
    {4, 5, 6},
    {7, 8, 9}   // 第一维长度 = 3
};
4. 扁平化初始化(按内存顺序填充)

cpp

int matrix4[2][3] = {1, 2, 3, 4, 5, 6}; 
// 等价于 {{1,2,3}, {4,5,6}}
5. 统一初始化(C++11)

cpp

int matrix5[][3] {
    {10, 20}, 
    {30, 40, 50}
};

三、注意事项

  1. 元素默认值:未显式初始化的元素会被零初始化(数值类型为 0,指针为 nullptr)。

  2. 维度限制:只有第一维的长度可以省略,其他维度必须显式指定。

  3. 动态数组:动态分配的数组(如 new int[n])无法直接初始化,需手动赋值。


示例代码 

cpp

#include <iostream>
using namespace std;

int main() {
    // 一维数组
    int arr[] = {1, 2, 3};
    cout << arr[0] << endl; // 输出 1

    // 二维数组
    int matrix[][2] = {{1, 2}, {3, 4}, {5, 6}};
    cout << matrix[2][1] << endl; // 输出 6

    return 0;
}

通过合理选择初始化方式,可以高效地管理数组的初始值,避免冗余代码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值