前言

这一节内容可能会涉及到一些之前所学习的相关知识,如果你还有不明白的,可以去温习一下之前所学C++基础教程

C++数组

C++ 中的数组可以看作是一个「容器」,专门用来存储一组相同类型的数据,就像一个排成一列的储物柜。每个储物柜都有一个编号(索引),你可以通过这个编号来取出或者放入对应位置的数据。

用通俗的例子来理解:

假设你有 100 本书,不想给每本书都取个名字(比如 book1、book2、book3… book100),这会非常麻烦。这时,你可以用一个「书架」(数组),把这些书按照顺序摆放在书架上,然后给每本书一个位置编号,比如:

  • 第一本书在位置 0,第二本书在位置 1,以此类推。

在 C++ 里,你可以通过「书架名字 + 编号」直接访问书的位置,比如:

  • books[0] 就是第 1 本书。
  • books[99] 就是第 100 本书。

数组的本质:

  1. 连续的存储空间:就像这些书在书架上是紧挨着摆放的,每个位置依次存储数据。
  2. 索引从 0 开始:C++ 习惯用 0 表示第一个位置。
  3. 方便操作:你只需要知道位置编号,就能快速找到书(数据)。

小总结:

数组是把一堆同类数据放到一个「共享的容器」里,用编号(索引)来区分每个数据,既节省了管理多个变量的麻烦,也让操作更高效。

1. 声明数组

数组是用来存储一组数据的,就像一本多格笔记本,每个格子都可以用来记数据。要告诉电脑这个数组需要存储什么类型的数据(比如数字或文字)以及需要多少格(大小)。

声明格式:

1
type arrayName[arraySize];

例子:

1
double balance[10];
  • double 表示每个格子存放小数。
  • balance 是这个数组的名字。
  • [10] 表示有 10 个格子。

想象一下:
你有一个存放 10 个数字的储物柜,每个柜子大小都一样,按顺序编号:09


2. 初始化数组

方式 1:逐个存放
就像你一格一格手动往柜子里放东西:

1
2
3
balance[0] = 1000.0;
balance[1] = 2.0;
// 依次放入其他值...

方式 2:一次性存放
如果你已经知道每格要存什么,可以一次性写完:

1
double balance[5] = {1000.0, 2.0, 3.4, 7.0, 50.0};

这就像直接打包好了 5 件东西,放进 5 个柜子。

省略大小:
如果你不想提前指定柜子数量,C++ 会根据数据的个数自动分配大小:

1
double balance[] = {1000.0, 2.0, 3.4, 7.0, 50.0};

3. 访问数组中的数据

你可以通过柜子的编号(索引)取出或修改里面的东西,比如:

1
2
balance[4] = 50.0;  // 改变第 5 个柜子的值为 50.0
double salary = balance[9]; // 获取第 10 个柜子的值

注意:

  • 柜子编号从 0 开始。
  • 如果数组大小是 10,最后一个柜子的编号是 9

4. 使用数组举例

以下程序会创建一个数组 n,存储从 100 开始的 10 个数字,并输出它们的值:

代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
using namespace std;

int main() {
int n[10]; // 创建一个大小为 10 的整数数组

// 给数组的每个柜子存值
for (int i = 0; i < 10; i++) {
n[i] = i + 100; // 每个柜子的值 = 编号 + 100
}

// 输出数组中的值
cout << "Element\tValue" << endl;
for (int j = 0; j < 10; j++) {
cout << j << "\t" << n[j] << endl;
}

return 0;
}

运行结果:

1
2
3
4
5
6
7
8
9
10
11
Element    Value
0 100
1 101
2 102
3 103
4 104
5 105
6 106
7 107
8 108
9 109

5. 更高级的数组概念

概念 通俗解释
多维数组 就像一个表格或一个盒子,可以存储二维或多维的数据。比如二维数组就像一个 Excel 表格,有行和列。
指向数组的指针 数组的名字本身就是一个指向第一个格子的「地址」。这就像你有一个地图,可以用地图快速找到第一个储物柜。
传递数组给函数 你可以把整个数组传递给函数,就像把储物柜的地图交给别人,让他们根据地图找到所有东西。
从函数返回数组 函数也可以返回一个数组,就像别人帮你装满东西后,把一个新的储物柜还给你。

小总结:

  1. 声明:定义一个装东西的储物柜(数组),指定它能装什么类型、装多少。
  2. 初始化:往柜子里放东西,可以逐个放,也可以一次性全放。
  3. 访问:通过编号(索引)取柜子里的东西或改它的值。
  4. 进阶用法:数组还可以做更多复杂的操作,比如作为表格、多维容器、或通过函数共享数据。