数组的下标是什么_「概念梳理篇03」看到“数组”就晕?搞定数组,关键是这3个问题...

「」跟着严Sir学编程继续更新。欢迎大家阅读、点赞、转发,更欢迎大家批评指正!

这是概念梳理的第03篇文章。

0f2b21014daffae16a750c8815beb490.png

今天我们来看一个很有趣、很有用,但是很多人,特别是文科生容易头晕眼花思路掉线的东西——数组。为什么在学习程序设计的过程中会出现这种情况呢?根据严Sir的教学经验,数组学习对于很多人是一道坎,翻过则游刃有余,否则止步不前,丧失信心。

严Sir认为,要想搞定数组,需要弄清3个问题:

1.到底什么是数组?

2.为什么要有下标?

3.如何对下标进行控制?


1 到底什么是数组?

到底什么是数组?这所有的问题的根源,这个问题不解决,头晕眼花思路掉线是非常正常的。

首先我们看看大多数教材当中对于数组的定义:

数组:就是指一组数据集合。

数组:就是有序的元素序列。

这是什么鬼?这是在讲数学上的集合吗?序列吗?

严Sir认为,很多教材对于数组的定义,增加了读者理解难度,同时没有说明其本质特点。

接下来严Sir讲自己的理解,在这里特别说明,接下来要讲的是我对数组的理解,而不是标准定义。

数组:就是指一组类型相同、名字相同、地址相邻、操作相对独立的变量。

采取缩句的方式理解就是:数组是一组变量。这明确了数组是变量的本质,而且这个变量是一组,至少是1个以上的变量。

这一组变量有什么样的特性呢?4个特性:类型相同、名字相同、地址相邻、操作相对独立。

举个生活当中的例子来方便小伙伴们理解。假设有一个朋友来看来,住在了友谊宾馆3楼,于是你很高兴地来宾馆找他。

24a00c541bb3bb3e86e029bb2d72c5bd.png

你来到3楼。你发现:这些房间类型相同,都是标准的客房;这些房间的名字相同,都叫3楼;这些房间一个挨着一个,地址相邻;这些房间彼此独立,互不影响。通过这样的引导,你会发现3楼就是一个数组,它里面有5个类型相同、名字相同、地址相邻、操作相对独立房间。

在C语言当中,语句: int a[10]; 作用就是在定义一个数组,这个数组里面共有10个变量,这10个变量的类型都是整型,名字都叫a,地址相邻,操作相对独立。

f4855c87aefe97c359aacaf2c952a104.png

2 什么要有下标?

但是,马上就有小伙伴问:你还是不能在3楼找到你的朋友,3楼有这么多房间,房间名字都叫a,你怎么知道他住在哪一间房间呢?这是一个很好的问题。那么,在实际生活当中,我们是如何解决的呢?对,加上房间编号。

01b116eddb034586136b7df7b6457ab2.png

有了编号后,你就可以快速确定朋友所在的房间了。

int a[10]; 会产生10个变量,这些变量的名字都叫a,这样变量与变量之间就不能区分了。为了解决这个问题,我们就为每个房间做上一个编号,这些编号默认是从0开始,依次递增,这个编号,被我们称为是数组的下标。

c8c7ad6f964b310de0a2788805fd717a.png

我们将数组名字和下标结合起来,表示数组当中的某一个变量,如a[0]、a[2]、a[8],数组内部的这些变量,我们称为是数组的元素。

4bb50b24940deaef2254a4d8abde05ae.png

到此我们发现,正是有了下标,我们才能精确的找到数组当中的某一个变量,进行相应的操作。

3 如何对下标进行控制?

数组的下标可以用变量来表示,这是对数组操作的基础。

int a[10];int i;i=2;a[i]=3;

上面的语句,最终将3装入到了a[2]元素。

527140250ff9993efa50bf60338bb88c.png

随着下标的变化,我们可以控制数组当中不同的元素。

如果要实现数组的遍历,通常是用一个循环结构控制下标,实现将数组当中的每个元素都控制1次。

int a[10];int i;for(i=0;i<=0;i++) a[i]=i+1;

上面的语句,循环控制变量i控制了下标,实现了将数组当中的每个元素都进行赋值操作。

091ca8007e37863abddfa26d7dbf7f9c.png

总结与思考

本文当中,我们对于数组三个重要的问题进行了梳理了:

1.到底什么是数组?

2.为什么要有下标?

3.如何对下标进行控制?

这三个问题是属于学习数组的关键基础性问题。需要小伙伴们真正搞懂。至于其它的算法的演变,都是在这个三问题上的拓展。

接下来思考这样的一个问题:

int a[4];a[0]=1;a[1]=2;a[2]=3;a[3]=4;a[4]=5;

上述的语句会不会有问题?会出现什么样的问题。欢迎大家在留言区里面讨论。

  • 8
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值