「」跟着严Sir学编程继续更新。欢迎大家阅读、点赞、转发,更欢迎大家批评指正!
这是概念梳理的第03篇文章。
今天我们来看一个很有趣、很有用,但是很多人,特别是文科生容易头晕眼花思路掉线的东西——数组。为什么在学习程序设计的过程中会出现这种情况呢?根据严Sir的教学经验,数组学习对于很多人是一道坎,翻过则游刃有余,否则止步不前,丧失信心。
严Sir认为,要想搞定数组,需要弄清3个问题:
1.到底什么是数组?
2.为什么要有下标?
3.如何对下标进行控制?
1 到底什么是数组?
到底什么是数组?这所有的问题的根源,这个问题不解决,头晕眼花思路掉线是非常正常的。
首先我们看看大多数教材当中对于数组的定义:
数组:就是指一组数据集合。
数组:就是有序的元素序列。
这是什么鬼?这是在讲数学上的集合吗?序列吗?
严Sir认为,很多教材对于数组的定义,增加了读者理解难度,同时没有说明其本质特点。
接下来严Sir讲自己的理解,在这里特别说明,接下来要讲的是我对数组的理解,而不是标准定义。
数组:就是指一组类型相同、名字相同、地址相邻、操作相对独立的变量。
采取缩句的方式理解就是:数组是一组变量。这明确了数组是变量的本质,而且这个变量是一组,至少是1个以上的变量。
这一组变量有什么样的特性呢?4个特性:类型相同、名字相同、地址相邻、操作相对独立。
举个生活当中的例子来方便小伙伴们理解。假设有一个朋友来看来,住在了友谊宾馆3楼,于是你很高兴地来宾馆找他。
你来到3楼。你发现:这些房间类型相同,都是标准的客房;这些房间的名字相同,都叫3楼;这些房间一个挨着一个,地址相邻;这些房间彼此独立,互不影响。通过这样的引导,你会发现3楼就是一个数组,它里面有5个类型相同、名字相同、地址相邻、操作相对独立房间。
在C语言当中,语句: int a[10]; 作用就是在定义一个数组,这个数组里面共有10个变量,这10个变量的类型都是整型,名字都叫a,地址相邻,操作相对独立。
2 什么要有下标?
但是,马上就有小伙伴问:你还是不能在3楼找到你的朋友,3楼有这么多房间,房间名字都叫a,你怎么知道他住在哪一间房间呢?这是一个很好的问题。那么,在实际生活当中,我们是如何解决的呢?对,加上房间编号。
有了编号后,你就可以快速确定朋友所在的房间了。
int a[10]; 会产生10个变量,这些变量的名字都叫a,这样变量与变量之间就不能区分了。为了解决这个问题,我们就为每个房间做上一个编号,这些编号默认是从0开始,依次递增,这个编号,被我们称为是数组的下标。
我们将数组名字和下标结合起来,表示数组当中的某一个变量,如a[0]、a[2]、a[8],数组内部的这些变量,我们称为是数组的元素。
到此我们发现,正是有了下标,我们才能精确的找到数组当中的某一个变量,进行相应的操作。
3 如何对下标进行控制?
数组的下标可以用变量来表示,这是对数组操作的基础。
int a[10];int i;i=2;a[i]=3;
上面的语句,最终将3装入到了a[2]元素。
随着下标的变化,我们可以控制数组当中不同的元素。
如果要实现数组的遍历,通常是用一个循环结构控制下标,实现将数组当中的每个元素都控制1次。
int a[10];int i;for(i=0;i<=0;i++) a[i]=i+1;
上面的语句,循环控制变量i控制了下标,实现了将数组当中的每个元素都进行赋值操作。
总结与思考
本文当中,我们对于数组三个重要的问题进行了梳理了:
1.到底什么是数组?
2.为什么要有下标?
3.如何对下标进行控制?
这三个问题是属于学习数组的关键基础性问题。需要小伙伴们真正搞懂。至于其它的算法的演变,都是在这个三问题上的拓展。
接下来思考这样的一个问题:
int a[4];a[0]=1;a[1]=2;a[2]=3;a[3]=4;a[4]=5;
上述的语句会不会有问题?会出现什么样的问题。欢迎大家在留言区里面讨论。