您的位置:

如何在C++中初始化数组

一、基本概念

C++数组是一种线性数据结构,它由一系列相同类型的元素组成。每个元素都可以通过下标来访问,下标从0开始,最大下标为数组长度减一。

二、声明数组

在C++中声明数组需要指定元素类型和数组大小,语法如下:

type arrayName[arraySize];

其中,type表示元素类型,arrayName表示数组名称,arraySize表示数组大小。

例如,声明一个大小为5、元素类型为int的数组:

int myArray[5];

三、初始化数组

1. 使用大括号初始化

使用大括号可以为数组元素提供初始值。以下是一些示例:

// 声明一个大小为3的字符串数组,并赋初值
string strArray[3] = {"Hello", "world", "!"};

// 声明一个大小为4的整型数组,并赋初值
int intArray[4] = {1, 2, 3, 4};

// 声明一个大小为10的浮点型数组,并赋初值
float floatArray[10] = {1.1, 2.2, 3.3, 4.4};

2. 不使用大括号初始化

如果没有为数组提供初始值,那么数组中的元素将会被默认初始化。以下是一些示例:

// 声明一个大小为5的整型数组,并默认初始化为0
int intArray[5] = {};

// 声明一个大小为3的字符型数组,并默认初始化为空字符
char charArray[3];

// 声明一个大小为4的布尔型数组,并默认初始化为false
bool boolArray[4];

3. 动态初始化

在C++中,可以在运行时动态地初始化数组,需要使用new来申请内存。以下是一些示例:

// 动态申请一个大小为10的整型数组,并赋初值
int *intArray = new int[10]{1,2,3,4,5,6,7,8,9,10};

// 动态申请一个大小为5的浮点型数组,并默认初始化为0
float *floatArray = new float[5]();

四、补充说明

在C++中,如果数组初始化的元素个数少于数组大小,那么剩余的元素将会被默认初始化。例如:

int intArray[5] = {1, 2};

这里只初始化了前两个元素,那么后三个元素将会被默认初始化为0。

如果数组初始化的元素个数多于数组大小,那么编译器将会抛出编译错误

另外,C++11添加了initializer_list初始化列表特性,可以用来方便地初始化数组和其他容器类型的对象,具体用法可以参考相关文档。

完整示例代码

// 大括号初始化的示例
#include <iostream>
#include <string>
using namespace std;

int main() {
    // 声明一个大小为3的字符串数组,并赋初值
    string strArray[3] = {"Hello", "world", "!"};
    for(int i = 0; i < 3; ++i) {
        cout << strArray[i] << " ";
    }
    cout << endl;

    // 声明一个大小为4的整型数组,并赋初值
    int intArray[4] = {1, 2, 3, 4};
    for(int i = 0; i < 4; ++i) {
        cout << intArray[i] << " ";
    }
    cout << endl;

    // 声明一个大小为10的浮点型数组,并赋初值
    float floatArray[10] = {1.1, 2.2, 3.3, 4.4};
    for(int i = 0; i < 10; ++i) {
        cout << floatArray[i] << " ";
    }
    cout << endl;

    return 0;
}


// 不使用大括号初始化的示例
#include <iostream>
using namespace std;

int main() {
    // 声明一个大小为5的整型数组,并默认初始化为0
    int intArray[5] = {};
    for(int i = 0; i < 5; ++i) {
        cout << intArray[i] << " ";
    }
    cout << endl;

    // 声明一个大小为3的字符型数组,并默认初始化为空字符
    char charArray[3];
    for(int i = 0; i < 3; ++i) {
        cout << charArray[i] << " ";
    }
    cout << endl;

    // 声明一个大小为4的布尔型数组,并默认初始化为false
    bool boolArray[4];
    for(int i = 0; i < 4; ++i) {
        cout << boolArray[i] << " ";
    }
    cout << endl;

    return 0;
}


// 动态初始化的示例
#include <iostream>
using namespace std;

int main() {
    // 动态申请一个大小为10的整型数组,并赋初值
    int *intArray = new int[10]{1,2,3,4,5,6,7,8,9,10};
    for(int i = 0; i < 10; ++i) {
        cout << intArray[i] << " ";
    }
    cout << endl;
    delete[] intArray;

    // 动态申请一个大小为5的浮点型数组,并默认初始化为0
    float *floatArray = new float[5]();
    for(int i = 0; i < 5; ++i) {
        cout << floatArray[i] << " ";
    }
    cout << endl;
    delete[] floatArray;

    return 0;
}