掌握 C++ 数组:声明、初始化、访问与实战操作全指南
C++ 数组完全指南
全面掌握 C++ 数组:声明、初始化、元素访问、遍历、用户输入、求和平均、越界风险与现代替代方案。
C++ 数组是固定大小、同类型元素的连续存储序列。例如 27 位学生成绩:
double grade[27];
grade 可存 27 个 double。声明后大小与元素类型不可变。
数组声明
dataType arrayName[arraySize];
示例:
int x[6];
int— 元素类型- x — 数组名
6— 元素个数
访问数组元素
下标从 0 开始:
array[index];
以 int x[6] 为例:

关键点
- 首元素索引
0(x[0]) - 长度
n数组,最后索引n-1(此处x[5]) - 元素在内存中连续存储。
int占 4 字节,x[0]在 2120d →x[1]在 2124d →x[2]在 2128d...
数组初始化
声明时初始化:
int x[6] = {19, 10, 8, 17, 9, 15};

让编译器推导大小:
int x[] = {19, 10, 8, 17, 9, 15};
提供元素少于声明大小时,剩余元素零初始化:
int x[6] = {1, 2}; // x = {1, 2, 0, 0, 0, 0}

元素修改与输入输出
int mark[5] = {19, 10, 8, 17, 9};
mark[3] = 9; // 修改第 4 个元素
cin >> mark[2]; // 输入存入第 3 个
cin >> mark[i-1]; // 输入存入第 i 个
cout << mark[0]; // 输出首元素
cout << mark[i-1]; // 输出第 i 个
示例 1:遍历输出数组
#include <iostream>
using namespace std;
int main() {
int numbers[5] = {7, 5, 6, 12, 35};
cout << "The numbers are: ";
// C++11 范围-based for(推荐只读遍历)
for (const int& n : numbers) {
cout << n << " ";
}
cout << "\nThe numbers are: ";
// 传统索引 for
for (int i = 0; i < 5; ++i) {
cout << numbers[i] << " ";
}
return 0;
}
输出
The numbers are: 7 5 6 12 35 The numbers are: 7 5 6 12 35
const int& n 避免拷贝且防止意外修改,比 int n 更高效。示例 2:用户输入填充数组
#include <iostream>
using namespace std;
int main() {
int numbers[5];
cout << "Enter 5 numbers: " << endl;
for (int i = 0; i < 5; ++i) {
cin >> numbers[i];
}
cout << "The numbers are: ";
for (int n = 0; n < 5; ++n) {
cout << numbers[n] << " ";
}
return 0;
}
输出
Enter 5 numbers: 11 12 13 14 15 The numbers are: 11 12 13 14 15
示例 3:求和与平均值
#include <iostream>
using namespace std;
int main() {
double numbers[] = {7, 5, 6, 12, 35, 27};
double sum = 0;
double count = 0;
cout << "The numbers are: ";
for (const double& n : numbers) {
cout << n << " ";
sum += n;
++count;
}
cout << "\nTheir Sum = " << sum << endl;
double average = sum / count;
cout << "Their Average = " << average << endl;
return 0;
}
输出
The numbers are: 7 5 6 12 35 27 Their Sum = 92 Their Average = 15.3333
范围循环简化了未知编译期大小数组的遍历。
数组越界访问:未定义行为
大小为 10 的数组,合法索引 0~9。访问 10 或更大触发未定义行为:可能崩溃、数据损坏、或看似正常实则埋雷。
std::array(固定大小)或 std::vector(动态大小),提供 .at() 边界检查、迭代器安全、RAII 内存管理。多维数组预览
二维数组 int matrix[3][4] 可视为 3 行 4 列表格。详见 C++ 多维数组专题。
C语言
- 掌握 C# 数组:声明、初始化与核心操作完全指南
- C# 多维数组:二维数组详解与代码示例
- 掌握 C# 锯齿数组:声明、初始化与访问完全指南
- 深入理解 C++ 类型转换:隐式、显式转型与现代 Cast 算符
- 掌握 C++ 运算符:六大类型全解析与实战示例
- C++ 注释最佳实践:编写可读、可维护代码的注释艺术
- 掌握 C++ break 语句:跳出循环与 switch 的核心控制流
- C++数组传递给函数实战指南
- C++ 数组完全指南:声明、初始化、多维数组与指针技巧
- C++ 动态数组分配实战指南:new/delete、初始化、扩容与内存管理
- MATLAB 多维数组与特殊数组完全指南
- Java 数组复制技术:全面指南