指数形式:如1.23e5 或12.3E5 都代表1.23×105。表2.3 中列出了C 语言中常用的转义字符及这些字符的含义。表2.3转义字符集下面程序中使用了几种转义字符,分析程序的执行结果。字符常量占有一个字节的存储空间,只能表示一个字符。......
2023-10-21
在实际应用中,为了处理方便,把具有相同类型的若干变量按有序的形式组织起来。在使用过程中,需要保留其原始数据。比如采集一段时间内某个设备的温度数据,这些按序排列的同类数据元素的集合称为数组。在C语言中,数组属于构造数据类型。一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型。它们主要解决现实中许多需要处理大量数据的问题。按数组元素的类型不同,数组按照数据的维数分为一维数组和二维数组及多维数组;数组按数据的类型又可分为数值数组、字符数组、指针数组、结构数组等各种类别。
4.5.1 一维数组
1.一维数组的定义
一维数组的定义格式为:
其中:类型说明符是任意一种基本数据类型或构造数据类型。数组名是用户定义的数组标识符。方括号中的常量表达式表示数据元素的个数,也称为数组的长度。
例如:
说明字符数组ch有20个元素。
说明实型数组b有10个元素,实型数组c有20个元素。
对于数组类型说明应注意以下几点:
(1)数组的类型实际上是指数组元素的取值类型。对于同一个数组,其所有元素的数据类型都是相同的。
(2)数组名的书写规则应符合标识符的书写规定。
(3)数组名不能与其他变量名相同。
例如:
程序中出现同名变量和数组是错误的。
(4)方括号中常量表达式表示数组元素的个数,如a[5]表示数组a有5个元素。但是其下标从0开始计算。因此,5个元素分别为a[0],a[1],a[2],a[3],a[4]。
(5)不能在方括号中用变量来表示元素的个数,但是可以是符号常数或常量表达式。
例如:
是合法的。
但是下述说明方式是错误的。
(6)允许在同一个类型说明中,说明多个数组和多个变量。
例如:
2.一维数组的初始化
给数组赋值的方法除了用赋值语句对数组元素逐个赋值外,还可采用初始化赋值和动态赋
值的方法。
数组初始化赋值是指在数组定义时给数组元素赋予初值。数组初始化是在编译阶段进行的。
这样将减少运行时间,提高效率。
初始化赋值的一般形式为:
其中在{ }中的各数据值即为各元素的初值,各值之间用逗号间隔。
例如:
C语言对数组的初始化赋值还有以下几点规定:
(1)可以为数组前面部分元素赋初值,但数组大小必须指定。
当{ }中值的个数少于元素个数时,只给前面部分元素赋值。
例如:
表示只给a[0]~a[4]5个元素赋值,而后5个元素自动赋0值。
(2)只能给元素逐个赋值,不能给数组整体赋值。
例如,给10个元素全部赋1值,只能写为:
而不能写为:
或
(3)若给全部元素赋值,则在数组说明中,可以不给出数组元素的个数。
例如:
可写为:
(4)如果想使一个数组中全部元素值为 0,可以写成:
或
3.一维数组元素的引用
数组元素是组成数组的基本单元。数组元素也是一种变量,其标识方法为数组名后跟一个下标。下标表示了元素在数组中的顺序号。
数组元素的一般形式为:
其中下标只能为整型常量或整型表达式。如为小数时,C编译将自动取整。
例如:
都是合法的数组元素。
数组元素通常也称为下标变量。必须先定义数组,才能使用下标变量。在C语言中只能逐个地使用下标变量,而不能一次引用整个数组。
4.数组的应用(www.chuimin.cn)
任务4.5中霓虹灯的控制是通过数组的应用来实现的,该任务中数组把所有的控制字按一定次序排列起来,通过对数组元素的循环引用实现指定的霓虹灯控制效果。
【实训4.6】如图4-40所示,P0端口连接8位LED灯,用数组方式实现对P0端口流水灯的控制。
分析:8位流水灯的控制,是以不同的控制状态实现的,8位LED灯的每一控制状态是确定的,即控制字是已知的,因此可以利用数组的方式完成其控制。
源程序代码如下:
本实训中,如果把数组元素的次序改变一下,流水灯控制的方向就会改变;如果改变控制字,控制效果就可以改变。
可见,当数据是确定的情况下,利用数组使得控制易于实现。
4.5.2 二维数组
1.二维数组的定义
前面介绍的数组只有一个下标,称为一维数组,其数组元素也称为单下标变量。在实际问题中有很多量是二维的或多维的,因此C语言允许构造多维数组。多维数组元素有多个下标,以标识它在数组中的位置,所以也称为多下标变量。这里只介绍二维数组,多维数组可由二维数组类推而得到。
二维数组定义的一般形式是:
其中常量表达式1表示第一维下标的长度,常量表达式2表示第二维下标的长度。
例如:
说明了一个三行四列的数组,数组名为a,其下标变量的类型为整型。该数组的下标变量共有3×4组,即:
二维数组在概念上是二维的,即是说其下标在两个方向上变化,下标变量在数组中的位置也处于一个平面之中,而不是像一维数组只是一个向量。但是,实际的硬件存储器却是连续编址的,也就是说存储器单元是按一维线性排列的。 如何在一维存储器中存放二维数组,可有两种方式:一种是按行排列,即放完一行之后顺次放入第二行。另一种是按列排列,即放完一列之后再顺次放入第二列。在C语言中,二维数组是按行排列的。
即:先存放a[0]行,再存放a[1]行,最后存放a[2]行。每行中有4个元素也是依次存放。由于数组a说明为int类型,该类型占2个字节的内存空间,所以每个元素均占有2个字节。
2.二维数组初始化
二维数组赋初值的方式有两种,一种是不分行给二维数组所有元素赋初值。例如:
二维数组按行给数组元素赋初值,各个元素赋值结果为:
另一种更直观的方法是分行给二维元素赋初值,各行元素初值用花括号括起来。例如:
同一维数组一样,二维数组也可以只给部分元素赋初值。例如:
对于数组前三个元素 a[0][0]、a[0][1]、a[0][2]分别赋值 1、3、5,其他剩余元素都为0。此外二维数组还可以用分行的方法给部分元素赋值。例如:
初始化后各元素的值是a[0][0]=1、a[0][1]=2、a[0][2]=0、a[1][0]=3、a[1][1]=0、a[1][2]=0。由此看出,分行赋初值可以不顺序赋值,应用起来更灵活、方便。
对于二维数组赋初值可以省略说明第一维的长度,但是无论何种情况,都不能省略说明第二维的长度。给全部元素赋值,例如:
编译系统会根据初值个数分配相应的存储单元。在分行给元素赋初值时,例如:
编译系统也会根据所分的行数确定第一维的长度。
3.二维数组元素的引用
二维数组的元素也称为双下标变量,其表示的形式为:
其中下标应为整型常量或整型表达式。
例如:
表示a数组三行四列的元素。
下标变量和数组说明在形式中有些相似,但这两者具有完全不同的含义。数组说明的方括号中给出的是某一维的长度,即可取下标的最大值;而数组元素中的下标是该元素在数组中的位置标识。前者只能是常量,后者可以是常量、变量或表达式。
4.5.3 字符型数组
用来存放字符量的数组称为字符数组。每一个数组元素是一个字符。
1.字符数组的定义
形式与前面介绍的数值数组相同。
例如:
由于字符型和整型通用,也可以定义为int c[10],但这时每个数组元素占2个字节的内存单元。
字符数组也可以是二维或多维数组。
例如:
即为二维字符数组。
2.字符数组的初始化
字符数组也允许在定义时作初始化赋值。
例如:
赋值后各元素的值为:
其中c[9]未赋值,系统自动赋0值。
当对全体元素赋初值时也可以省去长度说明。
例如:
这时C数组的长度自动定为9。
有关单片机原理与应用 基于C语言的文章
指数形式:如1.23e5 或12.3E5 都代表1.23×105。表2.3 中列出了C 语言中常用的转义字符及这些字符的含义。表2.3转义字符集下面程序中使用了几种转义字符,分析程序的执行结果。字符常量占有一个字节的存储空间,只能表示一个字符。......
2023-10-21
表4-3 C51支持的数据类型续表注:数据类型中加底色的部分为C51语言扩展的数据类型。C51语言中使用的数据类型包括C语言中标准的数据类型和C51语言扩展的数据类型。C51语言扩展的数据类型有位类型、可位寻址的位类型、特殊功能寄存器和16位特殊功能寄存器型等。另外,C51语言还支持由基本数据类型组成的数组、结构体、联合体和枚举类型等结构类型数据。......
2023-11-17
定时/计数器从电路上来讲是一个脉冲计数器,当计数脉冲来自单片机内部机器周期时,我们习惯上称其为定时器,而当计数脉冲来自单片机外部的输入信号时,则称其为计数器。图7-7 定时/计数器0的结构两个8位寄存器都是用来保存计数值的,其使用方法非常灵活。① 0:仅当TCON寄存器的TR0=1时启动定时/计数器0。定时/计数器0对来自单片机片内的机器周期进行计数,每个机器周期计数器的值都会加1。......
2023-11-17
A.8 KBB.16 KBC.32 KBD.64 KB三、判断题1.8位二进制无符号数的大小范围是0~256。()2.CPU的时钟周期为振荡器频率的倒数。()4.计算机中机器码就是由若干位二进制数构成的。()5.51系列单片机的产品8051与8031的区别是:8031片内无ROM。()9.8位二进制数原码的大小范围是-127~+127。为什么在计算机系统中广泛使用二进制数?......
2023-11-17
数据表示是指计算机能够辨认并进行存储、传送和处理数据的表示方法。在计算机语言中,常用的数据表示形式有二进制、八进制、十进制、十六进制。......
2023-11-18
C语言程序的基本构成要素包括:字符集、标识符、保留字、常量、变量、运算符等。每种程序设计语言都规定了书写源程序时允许使用的特定的字符集。·数字:0~9共10个。在其他地方出现时,只起间隔作用,编译程序对它们忽略不计。......
2023-11-20
ISP即在系统可编程,用几根下载线就可以对单片机进行程序下载,无需编程器,也不用将单片机取下,因此称之为在系统可编程。目前国内常用的下载软件可分为STC官方软件和开发板自己开发的软件。官方STC下载软件的下载过程如图2-26所示。图2-26 STC官方下载软件界面选择开发板上单片机的型号,这里选择STC90C516。......
2023-11-17
对于嵌套的结构体类型变量,访问其成员时应采用逐级访问的方法,直到获得所需访问的成员为止。利用结构体变量作函数参数,实现计算某学生3门课程平均成绩的功能。......
2023-11-20
相关推荐