跳转到内容

C++ 一维数组

来自代码酷


C++一维数组是编程中最基础的数据结构之一,用于存储相同类型的多个元素。它提供了一种高效的方式来管理连续的内存空间,并通过索引访问其中的元素。本文将详细介绍一维数组的定义、初始化、访问方式以及常见操作。

定义与语法[编辑 | 编辑源代码]

在C++中,一维数组的定义语法如下:

数据类型 数组名[数组大小];

其中:

  • 数据类型:数组中元素的类型(如`int`、`double`、`char`等)。
  • 数组名:数组的标识符,遵循变量命名规则。
  • 数组大小:数组能存储的元素数量,必须是常量表达式。

例如,定义一个包含5个整数的数组:

int numbers[5];

初始化[编辑 | 编辑源代码]

数组可以在定义时初始化,也可以在后续赋值。以下是几种初始化方式:

静态初始化[编辑 | 编辑源代码]

直接在大括号中提供初始值:

int numbers[5] = {1, 2, 3, 4, 5};  // 完全初始化
int partial[5] = {1, 2};           // 部分初始化,剩余元素为0
int autoSize[] = {1, 2, 3};        // 自动推断大小为3

动态初始化[编辑 | 编辑源代码]

通过循环或逐个赋值:

int numbers[5];
for (int i = 0; i < 5; i++) {
    numbers[i] = i + 1;
}

访问数组元素[编辑 | 编辑源代码]

数组元素通过索引访问,索引从0开始。例如:

int numbers[5] = {10, 20, 30, 40, 50};
cout << numbers[0];  // 输出10
numbers[2] = 100;    // 修改第三个元素为100

边界检查[编辑 | 编辑源代码]

C++不强制检查数组越界,访问非法索引可能导致未定义行为。例如:

int numbers[5] = {1, 2, 3, 4, 5};
cout << numbers[5];  // 越界访问,行为未定义

内存布局[编辑 | 编辑源代码]

一维数组在内存中是连续存储的。例如,`int arr[3] = {1, 2, 3};`的内存布局如下:

graph LR A[arr[0]: 1] --> B[arr[1]: 2] --> C[arr[2]: 3]

常见操作[编辑 | 编辑源代码]

遍历数组[编辑 | 编辑源代码]

使用循环遍历数组是常见操作:

int numbers[5] = {1, 2, 3, 4, 5};
for (int i = 0; i < 5; i++) {
    cout << numbers[i] << " ";
}
// 输出:1 2 3 4 5

计算数组长度[编辑 | 编辑源代码]

可以通过`sizeof`运算符计算数组长度:

int numbers[] = {1, 2, 3, 4, 5};
int length = sizeof(numbers) / sizeof(numbers[0]);
cout << length;  // 输出5

实际应用案例[编辑 | 编辑源代码]

案例1:统计学生成绩[编辑 | 编辑源代码]

以下程序计算学生的平均成绩:

#include <iostream>
using namespace std;

int main() {
    const int SIZE = 5;
    double grades[SIZE] = {85.5, 90.0, 78.5, 92.5, 88.0};
    double sum = 0;

    for (int i = 0; i < SIZE; i++) {
        sum += grades[i];
    }

    double average = sum / SIZE;
    cout << "平均成绩: " << average << endl;
    return 0;
}

输出:

平均成绩: 86.9

案例2:查找最大值[编辑 | 编辑源代码]

以下程序查找数组中的最大值:

#include <iostream>
using namespace std;

int main() {
    int numbers[] = {12, 45, 67, 23, 9};
    int max = numbers[0];

    for (int i = 1; i < 5; i++) {
        if (numbers[i] > max) {
            max = numbers[i];
        }
    }

    cout << "最大值: " << max << endl;
    return 0;
}

输出:

最大值: 67

注意事项[编辑 | 编辑源代码]

  • 数组大小必须是编译时常量(C++11后可用`constexpr`)。
  • 数组名是首元素的地址,例如`numbers`等价于`&numbers[0]`。
  • 数组不能直接赋值或比较,需逐个元素操作。

数学表示[编辑 | 编辑源代码]

数组可以表示为: A=[a0,a1,...,an1] 其中ai表示第i个元素,n为数组长度。

总结[编辑 | 编辑源代码]

一维数组是C++中基础且重要的数据结构,适用于存储和操作大量同类型数据。掌握其定义、初始化和常见操作是进一步学习更复杂数据结构的基础。