STM32单片机全案例开发实战
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.4.5 数组

数组也常称作表格,是指具有相同数据类型的数据集合。在定义数组时,程序会将一段连续的存储单元分配给数组,存储单元的最低地址存放数组的第一个元素,最高地址存放数组的最后一个元素。

根据维数不同,数组可分为一维数组、二维数组和多维数组;根据数据类型不同,数组可分为字符型数组、整型数组、浮点型数组和指针型数组。在用单片机C语言编程时,最常用的是字符型一维数组和整型一维数组。

1.一维数组

1)数组定义

一维数组的一般定义形式如下。

方括号(又称中括号)中的下标也称常量表达式,表示数组中的元素个数。

一维数组定义举例如下。

以上定义了一个无符号整型数组,数组名为a,数组中存放5个元素,元素类型均为整型,由于每个整型数据占2字节,故该数组占用了10字节的存储空间,该数组中的第1~5个元素分别用a[0]~a[4]表示。

2)数组赋值

在定义数组时,也可同时指定数组中的各个元素(即数组赋值),比如:

在数组a中,a[0]=2,a[4]=512;在数组b中,b[0]=2,b[4]=512,b[5]~b[7]均未赋值,全部自动填0。

在定义数组时,要注意以下几点。

(1)数组名应与变量名一样,必须遵循标识符命名规则,在同一个程序中,数组名不能与变量名相同。

(2)数组中的每个元素的数据类型必须相同,并且与数组类型一致。

(3)数组名后面的下标表示数组的元素个数(又称数组长度),必须用方括号括起来,下标是一个整型值,可以是常数或符号常量,不能包含变量。

2.二维数组

1)数组定义

二维数组的一般定义形式如下。

下标1表示行数,下标2表示列数。

二维数组定义举例如下。

以上定义了一个无符号整型二维数组,数组名为a,数组为2行3列,共6个元素,这6个元素依次用a[0] [0]、a[0] [1]、a[0] [2]、a[1] [0]、a[1] [1]、a[1] [2]表示。

2)数组赋值

二维数组赋值有以下两种方法。

(1)按存储顺序赋值。例如:

(2)按行分段赋值。例如:

3.字符型数组

字符型数组用来存储字符型数据。字符型数组可以在定义时进行初始化赋值。例如:

以上定义了一个字符型数组,数组名为c,数组中存放4个字符型元素(占用4字节的存储空间),分别是A、B、C、D(实际上存放的是这4个字母的ASCII码,即0x41、0x42、0x43、0x44)。如果对全体元素赋值,数组的长度(下标)也可省略,即上述数组定义也可写成:

如果要在字符型数组中存放一个字符串“good”,可采用以下3种方法。

当定义二维字符数组存放多个字符串时,二维字符数组的下标1为字符串的个数,下标2为每个字符串的长度,下标1可以不写,下标2则必须写,并且其值应较最长字符串的字符数(空格也算一个字符)至少多出一个。例如:

例中“\n”是一种转义符号,其含义是换行,将当前位置移到下一行开头。