C++ 数组完全指南:声明、初始化、多维数组与指针技巧
什么是数组?
在 C++ 中,数组是固定大小、连续内存块,存储相同数据类型的元素。可视为单个变量代表一组值,每个值通过从 0 开始的索引访问。
数组通过将相关值分组简化数据处理,支持高效遍历、随机访问和批量操作。
为什么使用数组?
数组提供:
- 同构数据的紧凑表示。
- 常数时间索引访问(
O(1))。 - 天然适配顺序或矩阵式处理的算法。
声明数组
语法:
type arrayName[arraySize];
- type:合法 C++ 数据类型(如
int、double、char)。 - arrayName:数组标识符。
- arraySize:指定元素个数的正整数。
示例:int age[5]; 创建可容纳 5 个整数的空间。
初始化数组
可在声明时赋值,也可后续赋值:
int age[5] = {19, 18, 21, 20, 17};
省略 arraySize 让编译器推断大小:
int age[] = {19, 18, 21, 20, 17};
通过索引单独赋值:
age[3] = 20; // 第 4 个元素
数组类型
- 一维数组 (1D)
- 多维数组 (2D、3D、…)
- 数组指针
一维数组
标准线性存储:
int age[5] = {19, 18, 21, 20, 17};
遍历示例:
#include <iostream>
using namespace std;
int main() {
int age[5] = {19, 18, 21, 20, 17};
for (int i = 0; i < 5; ++i) {
cout << age[i] << "\n";
}
return 0;
}
输出:

二维数组(矩阵)
语法:type arrayName[rows][cols];
int matrix[2][3] = {{0, 2, 1}, {4, 3, 7}};
访问方式:matrix[row][col]。遍历示例:
#include <iostream>
using namespace std;
int main() {
int a[3][2] = {{0, 2}, {1, 4}, {3, 7}};
for (int i = 0; i < 3; ++i) {
for (int j = 0; j < 2; ++j) {
cout << "a[" << i <<"] [" << j <<"] = " << a[i][j] << endl;
}
}
return 0;
}
输出:

三维数组
演示立方体数据结构:
#include <iostream>
using namespace std;
int main() {
int a[2][3][2] = { {{4, 8}, {2, 4}, {1, 6}}, {{3, 6}, {5, 4}, {9, 3}} };
cout << "a[0][1][0] = " << a[0][1][0] << "\n";
cout << "a[0][1][1] = " << a[0][1][1] << "\n";
return 0;
}
输出:

数组指针
数组名会退化为指向首元素的指针。示例:
#include <iostream>
using namespace std;
int main() {
int age[5] = {19, 18, 21, 20, 17};
int *p = age; // p 指向 age[0]
cout << "Address: " << p << "\n";
cout << "First value: " << *p << "\n";
return 0;
}
指针算术访问:
for (int i = 0; i < 5; ++i) {
cout << "*(p + " << i <<") = " << *(p + i) << endl;
}
访问元素
使用下标运算符 [ ]:
int john = age[2]; // 第三个元素
完整示例:
#include <iostream>
using namespace std;
int main() {
int age[5] = {19, 18, 21, 20, 17};
int john = age[2];
cout << "The age of John is: " << john;
return 0;
}
C++ 数组的优点
- 快速顺序遍历。
- O(1) 随机访问。
- 内存开销低,无需动态分配。
- 利于算法优化(如缓存友好循环)。
- 语言与标准库内置支持。
C++ 数组的缺点
- 固定大小,声明后不可调整。
- 索引管理不当易导致越界错误。
- 声明大小超出实际使用造成内存浪费。
- 标准数组无边界检查(安全起见推荐
std::array或std::vector)。
总结
- 数组是存储单一类型元素的连续内存块。
- 索引从 0 开始,最后一个索引为
size-1。 - 用
type name[size];声明,用{ }或单独赋值初始化。 - 一维数组线性存储;二维、三维数组建模矩阵与张量。
- 数组指针提供灵活的索引与算术访问。
- 大小已知且性能关键时选数组;否则首选
std::vector或std::array。
C语言
- 掌握 C# 数组:声明、初始化与核心操作完全指南
- C++数组传递给函数实战指南
- C++ do-while 循环详解:语法、实战示例与嵌套循环
- C++ 动态数组分配实战指南:new/delete、初始化、扩容与内存管理
- C++ 指针精通:核心概念、代码示例与实战应用
- C++ char 类型完全指南:声明、ASCII 码、输入输出与字符串转换
- C++ 运算符重载实战指南:语法、方法、限制与代码示例
- C++ 函数详解:从声明到调用的实战指南
- C# 集合实战教程:ArrayList、Stack、Queue、Hashtable 等核心类型全解析
- MATLAB 多维数组与特殊数组完全指南
- Java 数组复制技术:全面指南
- Java 数组教程:声明、创建、初始化与示例代码