C++ 一维数组教程

面向初学者的简明指南 - 学习数组的基本概念、语法和应用

什么是数组?

数组是一种数据结构,用于存储相同类型的多个元素。你可以把数组想象成一排邮箱,每个邮箱有唯一的编号(索引),并且只能存放特定类型的邮件(数据)。

为什么需要数组?

假设你需要存储100个学生的成绩,如果没有数组,你需要创建100个不同的变量:score1, score2, ..., score100。使用数组,你只需要一个变量就可以存储所有成绩。

声明和初始化一维数组

在C++中,声明数组需要指定元素的类型、数组名称和大小。

// 声明一个可以存储5个整数的数组
int scores[5];

// 声明并初始化数组
int numbers[5] = {10, 20, 30, 40, 50};

// 让编译器自动计算数组大小
int ages[] = {18, 21, 25, 30, 22}; // 数组大小为5

// 部分初始化
int values[5] = {1, 2, 3}; // 前三个元素为1,2,3,其余自动设为0

重要提示: C++数组索引从0开始,而不是1!这意味着第一个元素的索引是0,第二个是1,依此类推。

数组示例:存储和访问学生成绩

下面的例子展示了如何创建数组、存储数据并访问数组元素。

// 示例:学生成绩数组
#include <iostream>
using namespace std;

int main() {
    // 创建存储5个学生成绩的数组
    int grades[5] = {85, 92, 78, 90, 88};

    // 访问数组元素
    cout << "第一个学生的成绩: " << grades[0] << endl;
    cout << "第三个学生的成绩: " << grades[2] << endl;

    // 修改数组元素
    grades[1] = 95;
    cout << "更新后第二个学生的成绩: " << grades[1] << endl;

    // 使用循环遍历数组
    cout << "所有学生成绩: ";
    for(int i = 0; i < 5; i++) {
        cout << grades[i] << " ";
    }
    cout << endl;

    return 0;
}

代码解释

  1. 创建了一个名为grades的整型数组,包含5个元素
  2. 使用索引访问数组元素(grades[0]访问第一个元素)
  3. 演示了如何修改数组元素的值
  4. 使用for循环遍历数组中的所有元素

数组示例:计算平均值

这个例子展示如何使用数组计算一组数字的平均值。

// 计算温度平均值的示例
#include <iostream>
using namespace std;

int main() {
    // 一周七天的温度数据
    double temperatures[7] = {22.5, 24.0, 23.5, 25.0, 26.5, 27.0, 24.5};

    // 计算总温度
    double total = 0;
    for(int i = 0; i < 7; i++) {
        total += temperatures[i];
    }

    // 计算平均值
    double average = total / 7;

    cout << "一周平均温度: " << average << "°C" << endl;
    cout << "最高温度: " << temperatures[4] << "°C (星期五)" << endl;

    return 0;
}

测试你的理解

完成以下测试题来检查你对C++一维数组的理解程度。

问题 1: C++数组的索引从哪里开始?

A. 0
B. 1
C. 可以是0或1,由程序员决定
D. -1

问题 2: 下面哪个语句正确声明了一个包含3个整数的数组?

A. int array(3);
B. int array[3];
C. int array{3};
D. array int[3];

问题 3: 对于数组 int nums[5] = {10, 20, 30};,nums[4] 的值是多少?

A. 30
B. 40
C. 0
D. 编译错误

问题 4: 如何访问数组 arr 的第三个元素?

A. arr(3)
B. arr[3]
C. arr[2]
D. arr.3

关键点总结

  • 数组用于存储相同类型的多个元素
  • 数组大小在声明时必须确定(或由初始化值推断)
  • 数组索引从0开始,到(数组大小-1)结束
  • 可以使用循环轻松遍历数组所有元素
  • 数组元素可以通过索引直接访问和修改
  • 部分初始化的数组,未指定的元素会自动设为0(对于数值类型)

常见错误和注意事项

  • 数组越界: 访问数组范围之外的元素是常见错误,可能导致程序崩溃或不可预测的行为
  • 固定大小: C++标准数组的大小在编译时确定,不能动态改变
  • 数组名是常量指针: 数组名表示数组首元素的地址,不能修改
  • 内存管理: 数组在栈上分配内存,大型数组可能导致栈溢出
题目 对/错/率 难度 记录 通过
姓名 分数 提交时间 操作