C++数组:一维、二维、多维数组的运用
一. 数组的定义
1. 一维数组
语法:type arrayName[size];
其中type是数组元素的类型,如int、double、char等;arrayName是数组的名称,由程序员自行命名;size是数组的大小,它必须是一个常量表达式,表示数组中元素的个数。
int numbers[5]; // 定义一个包含5个整数元素的数组 char characters[10]; // 定义一个包含10个字符元素的数组
2. 初始化
在定义数组时可以进行初始化。完全初始化时,需要提供与数组大小相同数量的初始值。
int numbers1[3] = {1, 2, 3};
部分初始化时,未初始化的元素会被自动初始化为默认值(对于基本类型,如int为0,char为'\0'等)。
int numbers2[5] = {1, 2}; // 后面三个元素初始化为0
不指定数组大小的初始化(C++11及以上)
在初始化数组时提供了初始值列表,可以省略数组大小,编译器会根据初始值的数量自动确定数组大小。
int numbers3[] = {1, 2, 3, 4}; // 数组大小为4
二. 数组的运用
1. 元素访问
通过索引(下标)来访问数组元素,索引从0开始,最大索引为size - 1。
int numbers[5] = {1, 2, 3, 4, 5}; std::cout << numbers[2] << std::endl; // 输出3
数组越界问题,如果访问的索引超出合法范围,会导致未定义行为,可能会使程序崩溃或产生错误结果。
2. 数组遍历
可以使用for循环来遍历数组元素。
int numbers[5] = {1, 2, 3, 4, 5}; for (int i = 0; i < 5; i++) { std::cout << numbers[i] << " "; } std::cout << std::endl;
在C++11及以上版本中,还可以使用基于范围的for循环,它更加简洁。
int numbers[5] = {1, 2, 3, 4, 5}; for (int num : numbers) { std::cout << num << " "; } std::cout << std::endl;
3. 作为函数参数
数组作为函数参数时,通常会传递数组名和数组大小。
void printArray(int arr[], int size) { for (int i = 0; i < size; i++) { std::cout << arr[i] << " "; } std::cout << std::endl; } int main() { int numbers[5] = {1, 2, 3, 4, 5}; printArray(numbers, 5); return 0; }
三. 多维数组
1. 二维数组
定义语法:type arrayName[size1][size2];
其中size1表示第一维(通常理解为行数)的大小,size2表示第二维(通常理解为列数)的大小。
int matrix[3][4]; // 定义一个3行4列的二维整数数组
2. 初始化:可以按行进行初始化。
int matrix1[2][3] = { {1, 2, 3}, {4, 5, 6} };
也可以不按行初始化,但要注意元素的顺序。
int matrix2[2][3] = {1, 2, 3, 4, 5, 6};
3. 二维数组的访问与遍历
访问二维数组元素需要使用两个索引,分别对应行和列。
int matrix[2][3] = { {1, 2, 3}, {4, 5, 6} }; std::cout << matrix[1][2] << std::endl; // 输出6
遍历二维数组通常使用嵌套的for循环。
for (int i = 0; i < 2; i++) { for (int j = 0; j < 3; j++) { std::cout << matrix[i][j] << " "; } std::cout << std::endl; }
4. 更高维数组(如三维数组)
定义语法:type arrayName[size1][size2][size3];
int cube[2][3][4]; // 定义一个三维数组
初始化和访问方式与二维数组类似,需要更多的索引来定位元素,通常使用多层嵌套的for循环来遍历。
int cube[2][3][4]; for (int i = 0; i < 2; i++) { for (int j = 0; j < 3; j++) { for (int k = 0; k < 4; k++) { cube[i][j][k] = i * j * k; } } } for (int i = 0; i < 2; i++) { for (int j = 0; j < 3; j++) { for (int k = 0; k < 4; k++) { std::cout << cube[i][j][k] << " "; } std::cout << std::endl; } std::cout << std::endl; }
C++编程语言基础
- C++:从入门到工作的教程
- 这是我的第一个 C++程序!
- C++中main函数有什么作用?
- C++中 #include 指令的作用
- C++中常用的预处理指令
- C++中 iostream 头文件定义了什么
- C++名称空间(namespace)
- C++标准库中 std 命名空间定义了些什么
- C++常用的头文件
- C++源代码的发布方式
- C++变量名的定义、变量的作用、使用规范
- C++的关键字列表
- C++数据类型:整型(整数类型)
- 二进制补码、原码、反码
- C++数据类型:char字符型(整数类型)
- ASCII码表及C++字符函数库(cctype)
- 计算机汉字编码
- C++数据类型:bool类型(整数类型)
- C++中 const 限定符
- C++数据类型:浮点数
- C++运算符:算术运算符
- C++运算符:类型转换规则
- 计算机数据存储大小端模式
- C++运算符:位运算 与 bitset类库
- C++运算符:关系运算符与逻辑运算符
- C++流程控制:顺序、选择、循环、跳转语句
- C++函数的定义、参数传递、重载、嵌套
- C++数组:一维、二维、多维数组的运用
- C-style字符串、库函数 与 std::string对象
- C++数据类型:结构体(struct)
- C++数据类型:联合体(union)
- C++数据类型:枚举(enum)
- C++数据类型别名:typedef
- C++指针
- C++内存操作符:new分配 与 delete释放
- C++标准模板库(STL)容器、算法、迭代器
- C++标准模板库(STL)vector顺序容器
- C++标准模板库(STL)array固定容器
- C++标准模板库(STL)list双向链表容器
- C++标准模板库(STL)deque双端队列
- C++标准模板库(STL)集合 set 关联容器
- C++标准模板库(STL)map关联容器
- C++标准模板库(STL)unordered_set
- C++标准模板库(STL)unordered_map
- C++标准模板库(STL)algorithm算法库
- C++文件操作
- C++数学库(cmath)数学常量与数学函数
- C++模板:函数模板、类模板
- C++与SQLite3联合打造实用的应用程序
- C++实战开发中常用的库(概述)
- 第二部分:C++面向对象编程
- C++:类的定义与声明、类对象应用
- 第三部分:数据结构与算法(概述)
- 第一部分:C++语言简介与学习路线