2.9 使用数组控制流水灯
2.9.1 数组
实际工作中往往需要对一组数据进行操作,而这一组数据又有一定的联系。若用定义变量的方法,则需要多少个数据就要定义多少个变量,并且难以体现各个变量之间的关系,这种情况若使用数组就会变得简单一些。这一特点在后续章节会多次用到。数组有一维、二维和多维之分,本章只介绍一维数组。
1.一维数组的声明
一维数组的声明方式为:类型说明符 数组名[常量表达式]。例如:
2.一维数组的初始化
数组的初始化(定义)可以采用以下几种方法。
1)在声明数组时对数组的各元素赋初值(这就是定义数组)。例如:
2)只给一部分元素赋初值。例如:
3)如果对数组全部元素都赋了初值,则可以不指定长度。例如:
10个元素都赋了初值,因此也可以写成:
3.一维数组的引用
数组必须先定义,再引用。C语言规定只能引用数组元素,而不能引用整个数组。数组元素的表示方式为:数组名[下标],下标从0开始编号,下标的最大值为元素个数减1。例如,对于数组char zm[ ]={1,3,9,5,11,3,4,5,7,8},zm[0]、zm[1]、zm[2]、zm[3]、zm[4]分别表示数组zm的第1、2、3、4、5个元素,zm[9]就是最后一个元素,值为8。
2.9.2 使用数组控制流水灯的参考程序及解释
1.任务书
同2.6.2节。
2.参考程序
3.部分程序详解
第14~19行:变量i的初值默认为0,当i=0时,进入for循环语句后,由于i<8为真,则不执行i+ +,而直接执行第16行:P0=table[0];,即P0=0xfe;(因为i=0),点亮了第一个灯。延时500ms后,再执行第18行的判断,再执行i++,i的值变为1,再判断i<8是否为真,结果为真,因此执行第16行:P0=table[1];,即P0=0xfd;,点亮了第二个灯……依次点亮各个灯。当i等于7后(8个灯已点亮了一遍),执行到第18行时,需要将i置为0,开始下一轮的循环。