当前位置: 首页 > news >正文

C++ 入门学习经验 07——数组上:数组的简单理解

大家好啊!这里是阳阳的博客,一个正在努力学习技术的大学生。

指针相关内容我们先暂时告一段落,从这篇开始,我们进入一个新的基础知识点:数组

所以今天这篇,主要聊几个简单问题:

  • 为什么需要数组?

  • 数组适合解决什么问题?

  • 刚开始学数组时,可以怎么理解?

好了,废话不多说,咱们直接开始。


一、先从存成绩这个问题开始

假设我们要保存 5 个同学的成绩。

如果没有数组,可能会这样写:

int score1 = 90; int score2 = 85; int score3 = 78; int score4 = 92; int score5 = 88;

5 个成绩这样写还可以接受。

但如果是 50 个成绩、100 个成绩呢?

难道要写:

int score1; int score2; int score3; // ... int score100;

这样代码会非常累,也很难管理。

比如我们要计算平均分,就得一个一个变量去加。数据一多,代码马上变得又长又乱。

这时候数组就派上用场了。

数组可以把一批同类型的数据放在一起管理,比如:

int scores[5] = {90, 85, 78, 92, 88};

这一行代码的意思是:定义一个叫scores的数组,里面可以存 5 个int类型的数据。

原来 5 个分散的变量,现在被统一放进了一个整体里。

我觉得可以把数组理解成一个柜子,柜子里有很多小格子,每个格子都能放一个数据。


二、数组像一排编号的小房间

来看这个数组:

int scores[5] = {90, 85, 78, 92, 88};

可以画成这样:

下标: 0 1 2 3 4 内容: 90 85 78 92 88

这里有一个特别重要的点:数组下标从 0 开始。

也就是说:

scores[0] 表示第 1 个成绩,也就是 90 scores[1] 表示第 2 个成绩,也就是 85 scores[2] 表示第 3 个成绩,也就是 78 scores[3] 表示第 4 个成绩,也就是 92 scores[4] 表示第 5 个成绩,也就是 88

很多同学刚开始会不习惯,因为我们平时生活里习惯从 1 开始数,比如第 1 个、第 2 个、第 3 个。

但数组这里要先记住一个规则:

如果数组长度是 n,那么合法下标是 0 到 n - 1。

比如:

int a[5];

这个数组有 5 个位置,下标是:

0, 1, 2, 3, 4

没有合法的a[5]这个位置。

这个问题后面非常容易出错,后面我们会专门聊数组下标和越界。


三、数组和普通变量有什么区别?

普通变量像一个单独的小盒子。

比如:

int age = 18;

它只能存一个整数。

如果要存多个年龄,就要写很多变量:

int age1 = 18; int age2 = 19; int age3 = 20;

这些变量看起来名字相似,但它们还是一个个分开的变量。

数组更像一个统一编号的柜子:

int ages[3] = {18, 19, 20};

我们可以通过下标访问里面的数据:

cout << ages[0] << endl; cout << ages[1] << endl; cout << ages[2] << endl;

数组真正方便的地方,在于它可以配合循环使用。

比如输出 3 个年龄,可以写成:

for (int i = 0; i < 3; i++) { cout << ages[i] << endl; }

i = 0时,访问ages[0]

i = 1时,访问ages[1]

i = 2时,访问ages[2]

这样循环每走一遍,就处理数组里的一个元素。

所以数组和循环经常一起出现。数组负责把数据排好队,循环负责一个一个去处理。


四、什么时候适合用数组?

刚开始学数组时,我建议大家先记住一句话:

当你发现自己要定义很多个同类型变量时,就可以考虑数组。

比如这些情况就很适合:

  • 存 5 个同学的成绩

  • 存 10 个整数

  • 存一周 7 天的温度

  • 存一次考试每道题的得分

这些数据有共同点:类型一样,数量比较多。

比如一周 7 天的温度:

double temp[7] = {23.5, 24.0, 22.8, 25.1, 26.3, 24.9, 23.7};

这里每个数据都是double类型,所以可以放进同一个数组里。

数组通常存放同一种类型的数据。

int a[5]; // 存整数 double b[5]; // 存小数 char c[5]; // 存字符

所以数组的特点可以先记成三个词:

同类型、多个数据、统一管理。


五、数组的基本写法

刚开始不用背太多复杂写法,先掌握这几种就够了。

定义一个数组:

int a[5];

定义时直接赋值:

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

访问数组元素:

cout << a[0] << endl; cout << a[3] << endl;

修改数组元素:

a[2] = 100;

如果原来数组是:

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

执行完:

a[2] = 100;

数组内容就变成:

1, 2, 100, 4, 5

这里要注意,a[2]是第三个位置。

数组里最容易写错的地方,就是下标和实际位置之间差了 1。


六、用一个小例子感受数组

下面这个程序输入 5 个整数,再把它们输出:

#include <iostream> using namespace std; int main() { int nums[5]; cout << "请输入 5 个整数:" << endl; for (int i = 0; i < 5; i++) { cin >> nums[i]; } cout << "你输入的数字是:" << endl; for (int i = 0; i < 5; i++) { cout << nums[i] << " "; } return 0; }

第一个循环负责输入。

i = 0时,数据放到nums[0]

i = 1时,数据放到nums[1]

一直到i = 4,数据放到nums[4]

第二个循环负责输出,也是从nums[0]一直输出到nums[4]

这里大家可以感受一下,数组和循环配合起来以后,处理一批数据会方便很多。


七、这一篇先记住这些

今天这篇是数组系列的开头,大家先不用急着做很难的题。

先记住这几个点:

  1. 数组用来存放一批同类型的数据。

  2. 数组可以让多个变量统一管理。

  3. 数组下标从 0 开始。

  4. 数组长度是 n,合法下标就是 0 到 n - 1。

  5. 数组经常和循环一起使用。

对于刚开始学 C++ 的同学来说,数组是一个很重要的基础。前面我们更多是在处理单个变量,到了数组这里,就开始处理一批数据了。

不用一开始就把所有细节都理解得特别透。先知道数组解决什么问题,再慢慢熟悉它的写法、下标和循环配合,后面会顺很多。

希望这篇文章能帮你对数组有一个轻松一点的第一印象。

那这篇就先到这里,下一篇我们继续聊数组里最容易让同学写错的地方:数组下标、越界,以及为什么数组长度是 5 却不能访问a[5]

如果这篇文章对你有帮助,麻烦点赞、关注和收藏吧,谢谢!😄

有什么问题或者想法,欢迎在评论区留言,我们一起交流!

我们下篇见~

http://www.jsqmd.com/news/1015495/

相关文章:

  • 别再猜了!MPU6050的CPOUT引脚,数据手册没写清楚的电容选型避坑指南
  • 硬件定时器
  • 联邦学习在医学报告生成中的应用与优化
  • [特殊字符] 数据计算及应用专业:科研航道还是职场跳板?高考志愿选专业的终极指南!
  • 2026年新发布:金坛区全屋断舍离收纳整理服务机构可靠选择深度指南 - 品牌鉴赏官2026
  • 大专非科班拿下汇丰外包Java岗,我的IKM笔试血泪史与避坑指南(附真题)
  • Notepad--终极指南:国产跨平台编辑器的完整使用教程
  • EEAT权威背书体系搭建:实体服务品牌GEO优化提升AI采信权重完整技术路径
  • 重庆五大猫舍犬舍实测:伴西西双店领跑,山城购宠避坑指南 - 同城宠物优选基地
  • NLP技术在漏洞预测中的应用与优化
  • 【Springboot毕设全套源码+文档】基于springboot高校毕业设计管理系统设计与实现(丰富项目+远程调试+讲解+定制)
  • 实战避坑:基于Android HIDL的GNSS模块调试与问题排查指南
  • 2026 合肥 5 家猫犬舍实测:伴西西领跑,新手购宠避坑必看 - 同城宠物优选基地
  • 2026年GEO监测工具怎么选?数据溯源、平台覆盖和归因分析,谁更务实?
  • RKMedia人脸车牌SDK二次开发避坑指南:RV1126平台上的内存、图片尺寸与性能调优
  • 世界杯还没结束,但AI已经把创意玩疯了
  • Tesla Robotaxi落地:自动驾驶商业化的生死突围
  • 一键循环录制工具:让旧手机变身车载记录仪与家庭监控
  • 保姆级教程:用示波器和DP协议分析仪调试DisplayPort EQ训练失败问题
  • C++面向对象面试高频考点精讲:从虚函数表到菱形继承,一次搞懂
  • 泛微E9流程创建API避坑指南:主表字段、附件上传那些容易出错的细节
  • 别再死磕ITTO了!软考高项成本管理4个子过程,用这套‘输入-处理-输出’工作流来理解
  • 礼品厂主要分布在哪里?各产区有什么差异?
  • 87468
  • VCSA 7.0部署卡在80%?别慌,这3个DNS和IP配置细节帮你搞定
  • 从‘玄学’到科学:DisplayPort链路训练中Clock Recovery失败的排查思路与工具使用
  • MySQL 8启动报错‘binlog.index not found‘?别急着重装,先检查这个初始化参数
  • 2026年近期专业武汉施工合同纠纷律师咨询联系指南:刘津龙律师团队解析 - 品牌鉴赏官2026
  • MySQL 8启动报错‘binlog.index‘找不到?别急着重装,先检查这个初始化参数
  • 2026年6月汽车贴膜厂家推荐,汽车膜/新能源汽车贴膜/汽车太阳膜/防爆太阳膜/全车玻璃膜,汽车贴膜品牌公司哪家靠谱 - 品牌推荐师