c++数组初始化的种类有哪些

1. 一维数组初始化

一维数组是一系列具有相同类型的数据(元素)的集合。数组中每个元素都可以通过索引访问,索引表示元素在数组中的位置。

1.1 采用大括号初始化

在大括号中,将数组的每个元素初始化为一个给定的值,用逗号隔开。

int arr[4] = {1, 2, 3, 4};

上述代码将创建一个有4个元素的数组,分别初始化为1、2、3和4。

1.2 自动类型推导

C++11允许我们使用auto关键字对数组进行自动类型推导。

auto arr = new int[4] {1, 2, 3, 4};

上述代码将创建一个有4个元素的数组,并将它初始化为1、2、3和4。

1.3 快速初始化

C++11允许我们使用初始化列表来快速初始化数组。

int arr[] {1, 2, 3, 4};

上述代码将创建一个有4个元素的数组,并将它初始化为1、2、3和4。

2. 二维数组初始化

二维数组是一种表格状的数据结构,有行和列组成,每个元素都可以由其行和列的位置来访问。

2.1 采用大括号初始化

在大括号中,将二维数组的每个元素初始化为一个给定的值,用逗号隔开,同时要按照行的顺序进行初始化。

int arr[2][3] = {{1, 2, 3}, {4, 5, 6}};

上述代码将创建一个2行3列的数组,并将它初始化为:

1 2 3
4 5 6

2.2 自动类型推导

C++11允许我们使用auto关键字对二维数组进行自动类型推导。

auto arr = new int[2][3] {{1, 2, 3}, {4, 5, 6}};

上述代码将创建一个2行3列的数组,并将它初始化为:

1 2 3
4 5 6

3. 动态数组初始化

动态数组的大小在运行时确定,可以使用new运算符来创建动态数组。

3.1 采用大括号初始化

在大括号中,将数组的每个元素初始化为一个给定的值,用逗号隔开。

int n = 4;

int* arr = new int[n] {1, 2, 3, 4};

上述代码将创建一个有4个元素的数组,并将它初始化为1、2、3和4。

3.2 自动类型推导

C++11允许我们使用auto关键字对动态数组进行自动类型推导。

int n = 4;

auto arr = new int[n] {1, 2, 3, 4};

上述代码将创建一个有4个元素的数组,并将它初始化为1、2、3和4。

3.3 快速初始化

C++11允许我们使用初始化列表来快速初始化动态数组。

int n = 4;

auto arr = new int[n] {1, 2, 3, 4};

上述代码将创建一个有4个元素的数组,并将它初始化为1、2、3和4。

4. 字符串数组初始化

在C++中,字符串是以字符数组的形式存储的。字符串数组是一个数组,其中的每个元素都是一个字符串。字符串数组的初始化可以采用以下方式:

4.1 采用大括号初始化

char str[][6] = {"hello", "world", "!"};

上述代码将创建一个3个元素的字符数组,其中每个元素都是一个字符串。

4.2 自动类型推导

auto str = new char[3][6] {"hello", "world", "!"};

上述代码将创建一个3个元素的字符数组,其中每个元素都是一个字符串。

4.3 快速初始化

char str[][6] = {"hello", "world", "!"};

上述代码将创建一个3个元素的字符数组,其中每个元素都是一个字符串。

5. 实例

以下是一个使用快速初始化的例子:

#include <iostream>

using namespace std;

int main() {

int arr[][3] {{1, 2, 3}, {4, 5, 6}};

for (int i = 0; i < 2; i++) {

for (int j = 0; j < 3; j++) {

cout << arr[i][j] << " ";

}

cout << endl;

}

return 0;

}

输出:

1 2 3

4 5 6

6. 总结

本文介绍了C++中数组的初始化方法,包括一维数组、二维数组、动态数组和字符串数组的初始化。通过本文的介绍,我们可以看到不同的初始化方法适用不同的数组类型和场景。在实际编程中,我们可以根据具体情况选择不同的初始化方法,提高程序的效率和可读性。

免责声明:本文来自互联网,本站所有信息(包括但不限于文字、视频、音频、数据及图表),不保证该信息的准确性、真实性、完整性、有效性、及时性、原创性等,版权归属于原作者,如无意侵犯媒体或个人知识产权,请来电或致函告之,本站将在第一时间处理。猿码集站发布此文目的在于促进信息交流,此文观点与本站立场无关,不承担任何责任。

后端开发标签