C++ 基础语法入门(六):数组详解

数组是 C++ 中用于存储相同类型数据的固定长度序列结构,广泛应用于数据处理、循环遍历、查找、排序等编程场景。本篇将从定义、初始化、遍历、多维数组等方面介绍数组的使用方法与注意事项,并扩展至更现代与安全的使用方法。

一、数组定义与初始化

1.1 数组定义

类型名 数组名[长度];

示例:

int scores[5];        // 声明一个包含5个int的数组
char letters[10];     // 声明一个包含10个字符的数组

1.2 数组初始化方式

int arr[3] = {1, 2, 3};
int arr[] = {4, 5, 6};  // 自动推导长度
int arr[5] = {1};       // 未赋值元素自动为0

二、数组访问与遍历

数组元素通过下标访问,范围从 0长度-1

示例:

int arr[3] = {10, 20, 30};
std::cout << arr[0];  // 输出10

遍历:

for (int i = 0; i < 3; ++i) {
    std::cout << arr[i] << " ";
}

⚠️ C++ 不会自动检查越界访问,arr[10] 可能导致未定义行为!


三、数组与函数

数组可作为参数传递给函数(实为指针传递)。

void printArray(int arr[], int size) {
    for (int i = 0; i < size; ++i)
        std::cout << arr[i] << " ";
}

调用:

int nums[4] = {1, 2, 3, 4};
printArray(nums, 4);

✅ 可通过传递长度参数避免访问越界


四、多维数组

定义:

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

访问:

std::cout << matrix[1][2];  // 输出6

遍历:

for (int i = 0; i < 2; ++i) {
    for (int j = 0; j < 3; ++j) {
        std::cout << matrix[i][j] << " ";
    }
    std::cout << std::endl;
}

五、常见数组操作练习

  • 求数组最大/最小值

  • 数组元素求和与平均值

  • 查找元素是否存在

  • 数组排序(冒泡/选择排序)

  • 数组倒序


六、高级用法拓展

6.1 使用 std::size() 获取数组长度(C++17)

#include <iostream>
#include <iterator>

int arr[] = {10, 20, 30};
std::cout << std::size(arr);  // 输出3

✅ 避免手动 sizeof(arr) / sizeof(arr[0])


6.2 使用模板传递数组引用(保留数组大小)

template<size_t N>
void printArrayRef(int (&arr)[N]) {
    for (int i = 0; i < N; ++i)
        std::cout << arr[i] << " ";
}

✅ 更安全地传参,防止数组退化为指针


6.3 使用 std::array 替代原始数组(推荐)

#include <array>

std::array<int, 3> arr = {1, 2, 3};
arr[1] = 10;
for (int v : arr)
    std::cout << v << " ";

优点:

  • 自动推导长度

  • 提供 .size().at()、迭代器等 STL 接口

  • 可直接用于 STL 算法


6.4 使用范围-based for 循环(C++11 起)

int arr[] = {4, 5, 6};
for (int val : arr) {
    std::cout << val << " ";
}

✅ 可读性强、避免越界访问


6.5 配合 STL 算法使用数组指针范围

#include <algorithm>

int arr[] = {3, 1, 2};
std::sort(std::begin(arr), std::end(arr));  // 排序

📌 总结

功能示例/说明
定义数组int a[5];
初始化数组{1, 2, 3}
访问元素arr[i]
遍历for 循环、range-based for
多维数组int a[2][3];
函数参数传递void func(int arr[], int size)
安全替代std::array、模板引用
使用 STLstd::sort(begin(arr), end(arr))

数组是 C++ 编程中处理数据最基础也最重要的工具之一。打好数组基础不仅有助于处理基本问题,还能更好地理解 STL 容器、内存管理与指针操作,为构建高质量程序打下坚实基础。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值