1. 概述
数组是存储相同类型 元素的连续内存容器,大小在编译时确定。
2. 声明与初始化
// 声明
int arr1[5]; // 未初始化
int arr2[5] = {1, 2, 3}; // 部分初始化,剩余为0
int arr3[] = {1, 2, 3, 4, 5}; // 自动推导大小
int arr4[5] = {}; // 全部初始化为0
3. 访问元素
int arr[5] = {10, 20, 30, 40, 50};
arr[0] = 100; // 通过索引访问
int x = arr[2]; // 获取元素
4. 多维数组
int matrix[3][4]; // 3行4列二维数组
int cube[2][3][4]; // 三维数组
// 初始化
int grid[2][3] = {{1, 2, 3}, {4, 5, 6}};
5. 数组特性
-
固定大小:编译时确定,不可动态改变
-
连续存储:元素在内存中连续排列
-
类型一致:所有元素类型相同
-
可退化指针:数组名可退化为指向首元素的指针
-
无边界检查:访问越界导致未定义行为
6. 注意事项
-
数组索引从0开始
-
标准数组不提供size()方法
-
可使用
sizeof(arr)/sizeof(arr[0])获取元素数量 -
避免越界访问
-
不支持直接赋值和比较
7. 替代方案
考虑使用标准库容器:
-
std::array:固定大小,更安全 -
std::vector:动态大小,功能丰富 -
std::span(C++20):非拥有视图
8. 示例代码
#include <iostream>
int main() {
int scores[5] = {85, 90, 78, 92, 88};
// 计算平均值
int sum = 0;
for (int i = 0; i < 5; ++i) {
sum += scores[i];
}
double average = static_cast<double>(sum) / 5;
return 0;
}
提示:对于现代C++开发,优先考虑std::array或std::vector替代原生数组