基于proteus的51单片机仿真实例四十一、C语言的一维数组
2017-05-01 09:27
281 查看
1、基本数据类型(如整型、浮点型、字符型)的一个重要特征是只能具有单一的值,然而,许多情况下我们需要用到不止一个数据。例如:我们想要统计10个学生的成绩,如果用基本数据类型来表示的话,需要定义10个基本类型变量。如果有更多学生,那就需要有更多的基本类型变量。那么有没有更好的办法,定义一种新的数据类型,能够包含更多的数据?如果有,无疑将大大简化操作。
C语言中除了基本数据类型外,还提供了构造类型的数据,构造类型的数据是由基本类型数据按照一定规则组合而成的,因此也称为导出类型数据,。C语言提供了三种构造类型:数组类型、结构体类型和共用体类型。构造类型可以更为方便的描述现实问题中各种复杂的数据结构。
2、数组
数组是一组有序数据的集合,数组中的每一个数据都属于同一个数据类型。
数组类型的所有元素都属于同一种类型,并且是按顺序存放在一个连续的存储空间中,即最低的地址存放第一个元素,最高的地址存放最后一个元素。
数组类型的优点有:
1)让一组同一类型的数据共用一个变量名,不需要为每一个数据都定义一个名字
2)有余数组的构造方法采用的是顺序存储,从而可以对数组中的元素按同一方式进行各种操作。
需要说明的是:数组元素的次序是由数组下标确定的,下表是从0开始的。
3、数组中的元素可以用数组名和下标来唯一确定。数组可以是一维数组、二维数组、多维数组以及字符数组等。一维数组只有一个下标,多维数组有多个下标。
一维数组的定义形式如下:
数据类型 [存储器类型] 数组名 [常量表达式];
各部分说明书下:
数据类型:知名数组中各个元素的数据类型
[存储器类型]:这是一个可选项,它指出该数组所在的存储空间
数组名:数组的标识符,它的定义方法与变量的命名方法一样。
常量表达式:即数组的下标。它指明数组的长度,即该数组有多少个元素,常量表达式必须用方括号[]括起来,而且必须是一个确定的值,不能是一个变量。
4、一维数组元素的赋值
一维数组元素的赋值方法有以下几种:
1)在定义数组时赋值,例如:
int a[10]={0,1,2,3,4,5,6,7,8,9};
数组元素的下标从0开始,赋值后,a[0]=0,a[1]=1.以此类推,直到最后一个元素a[9]=9。
2)对于一个数组,也可以部分赋值,例如
int b[10]={0,1,2,3};
这里只对前4个元素赋值,对于没有赋值的b[4]到b[9],默认的初始值为0
3)如果一个数组元素的全部元素都已赋值,可以省去方括号中的下标,例如
int c[]={0,1,2,3,4,5};
数组元素的赋值与普通变量的赋值相同。可以把数组元素像变量一样使用。
5、本例演示一维数组的使用实例
在keil c51中新建工程ex30,编写如下程序代码,编译并生成ex30.hex文件
//实例30:一维数组演示实例
#include <reg51.h> //包含头文件
void delay(void) //延时函数
{
unsigned int i,j;
for(i = 0;i < 5000;i++)
for(j = 0;j< 50;j++);
}
void main(void)
{
unsigned char num[3] = {0x0f,0xf0,0x55}; //定义一个数组,同时给数组赋初值
P0 = num[0]; //数组的第一个元素送到P0口显示
delay(); // 延时一段时间
P0 = num[1]; //
delay();
P0 = num[2];
delay();
while(1)
{
}
}
6、在proteus中新建仿真文件ex30.dsn,原理图如下图所示
7、将ex30.hex文件载入at89c51中,启动仿真,运行结果依次如下图所示
C语言中除了基本数据类型外,还提供了构造类型的数据,构造类型的数据是由基本类型数据按照一定规则组合而成的,因此也称为导出类型数据,。C语言提供了三种构造类型:数组类型、结构体类型和共用体类型。构造类型可以更为方便的描述现实问题中各种复杂的数据结构。
2、数组
数组是一组有序数据的集合,数组中的每一个数据都属于同一个数据类型。
数组类型的所有元素都属于同一种类型,并且是按顺序存放在一个连续的存储空间中,即最低的地址存放第一个元素,最高的地址存放最后一个元素。
数组类型的优点有:
1)让一组同一类型的数据共用一个变量名,不需要为每一个数据都定义一个名字
2)有余数组的构造方法采用的是顺序存储,从而可以对数组中的元素按同一方式进行各种操作。
需要说明的是:数组元素的次序是由数组下标确定的,下表是从0开始的。
3、数组中的元素可以用数组名和下标来唯一确定。数组可以是一维数组、二维数组、多维数组以及字符数组等。一维数组只有一个下标,多维数组有多个下标。
一维数组的定义形式如下:
数据类型 [存储器类型] 数组名 [常量表达式];
各部分说明书下:
数据类型:知名数组中各个元素的数据类型
[存储器类型]:这是一个可选项,它指出该数组所在的存储空间
数组名:数组的标识符,它的定义方法与变量的命名方法一样。
常量表达式:即数组的下标。它指明数组的长度,即该数组有多少个元素,常量表达式必须用方括号[]括起来,而且必须是一个确定的值,不能是一个变量。
4、一维数组元素的赋值
一维数组元素的赋值方法有以下几种:
1)在定义数组时赋值,例如:
int a[10]={0,1,2,3,4,5,6,7,8,9};
数组元素的下标从0开始,赋值后,a[0]=0,a[1]=1.以此类推,直到最后一个元素a[9]=9。
2)对于一个数组,也可以部分赋值,例如
int b[10]={0,1,2,3};
这里只对前4个元素赋值,对于没有赋值的b[4]到b[9],默认的初始值为0
3)如果一个数组元素的全部元素都已赋值,可以省去方括号中的下标,例如
int c[]={0,1,2,3,4,5};
数组元素的赋值与普通变量的赋值相同。可以把数组元素像变量一样使用。
5、本例演示一维数组的使用实例
在keil c51中新建工程ex30,编写如下程序代码,编译并生成ex30.hex文件
//实例30:一维数组演示实例
#include <reg51.h> //包含头文件
void delay(void) //延时函数
{
unsigned int i,j;
for(i = 0;i < 5000;i++)
for(j = 0;j< 50;j++);
}
void main(void)
{
unsigned char num[3] = {0x0f,0xf0,0x55}; //定义一个数组,同时给数组赋初值
P0 = num[0]; //数组的第一个元素送到P0口显示
delay(); // 延时一段时间
P0 = num[1]; //
delay();
P0 = num[2];
delay();
while(1)
{
}
}
6、在proteus中新建仿真文件ex30.dsn,原理图如下图所示
7、将ex30.hex文件载入at89c51中,启动仿真,运行结果依次如下图所示
相关文章推荐
- 基于proteus的51单片机仿真实例三十四、C语言的break语句
- 基于proteus的51单片机仿真实例三十五、C语言的continue语句
- 基于proteus的51单片机仿真实例四十九、C语言数组的指针演示实例
- 基于proteus的51单片机仿真实例二十七、C语言的语句演示实例
- 基于proteus的51单片机仿真实例三十八、C语言的函数调用
- 基于proteus的51单片机仿真实例十三、51单片机的C语言宏定义应用实例
- 基于proteus的51单片机仿真实例十五、51单片机的C语言条件编译应用实例
- 基于proteus的51单片机仿真实例四十二、C语言的二维数组演示实例
- 基于proteus的51单片机仿真实例三十七、C语言的函数参数传递
- 基于proteus的51单片机仿真实例四十七、C语言的指针演示实例
- 基于proteus的51单片机仿真实例三十二、C语言的do-while循环语句
- 基于proteus的51单片机仿真实例四十五、C语言的共用体演示实例
- 基于proteus的51单片机仿真实例四十六、C语言的枚举类型演示实例
- 基于proteus的51单片机仿真实例三十九、C语言的文件调用
- 基于proteus的51单片机仿真实例二十一、C语言的自增和自减运算演示实例
- 基于proteus的51单片机仿真实例十六、51单片机的C语言的标识符和关键字
- 基于proteus的51单片机仿真实例四十八、C语言的指针数组演示实例
- 基于proteus的51单片机仿真实例四十、C语言的文件调用
- 基于proteus的51单片机仿真实例三十六、C语言的函数返回值
- 基于proteus的51单片机仿真实例二十九、C语言的switch-case多分支选择语句