一、静态初始化
在定义数组时,直接给出数组元素的初始化值。例如:
int arr1[5] = {1, 2, 3, 4, 5}; // 等同于 int arr2[] = {1, 2, 3, 4, 5};
如果未给出的数组元素将被自动初始化为 0。
如果数组元素是字符类型,可以使用双引号来初始化数组:
char str[] = "Hello World!"; // 等同于 char str[] = {'H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd', '!', '\0'};
二、动态初始化
在数组定义后,逐一给元素赋值。例如:
int arr[5]; arr[0] = 1; arr[1] = 2; arr[2] = 3; arr[3] = 4; arr[4] = 5;
这种方式需要逐一对每个元素进行初始化,可以在循环中使用。
三、部分元素初始化
在定义数组时,可以只给出一部分元素的初始化值,其他元素将自动初始化为 0。例如:
int arr[5] = {1, 2}; // 等同于 int arr[5] = {1, 2, 0, 0, 0};
也可以部分引用初始化值数组。例如:
int arr1[5] = {1, 2, 3}; int arr2[5] = {0, 0}; arr2[1] = arr1[1]; arr2[2] = arr1[2];
四、动态分配内存初始化
使用 new
操作符为数组动态分配内存,并初始化元素。例如:
int* arr = new int[5]{1, 2, 3, 4, 5};
这种方式在动态创建数组时非常有用。
五、使用标准库算法初始化
在 C++11 中,标准库为我们提供了 <algorithm>
头文件,里面有一些初始化算法可以使用。例如:
#include <algorithm> #include <iostream> #include <vector> int main() { std::vector<int> vec(5); std::iota(vec.begin(), vec.end(), 1); for (int i : vec) { std::cout << i << " "; } } // 输出:1 2 3 4 5
这里我们使用了 std::iota()
算法,它会将指定范围内的元素按顺序初始化。