文档介绍:第六讲单片机C语言(2)
C51构造数据类型
1. 数组
►一维数组的定义
类型说明符数组名[常量表达式]
如 int a[10]; //表示数组名为a,数组类型为整型,共10个元素。
数组必须先定义再使用。
数组元素的表示形式为: 数组名[下标] 如 a[0] a[1]
►一维数组的初始化
①在定义数组时对数组元素赋以初值
如 int a[10]={0,1,2,3,4,5,6,7,8,9};
②可以只给一部分元素赋值
如 int a[10]={0,1,2,3,4}; //后5个元素的值均为0。
③对全部数组元素赋值时,可以不指定数组长度。
如 int a[ ]={0,1,2,3,4,5,6,7,8,9};
►二维数组的定义
类型说明符数组名[常量表达式] [常量表达式] 如 int a[2][5]
►二维数组的初始化
如 int a[3][4]={ {1,2,3,4},{5,6,7,8},{9,10,11,12} };
或 int a[3][4] ={1,2,3,4,5,6,7,8,9,10,11,12};
对数组中部分元素赋值如 int a[3][4]={ {1},{2},{3} }; int a[3][4]={ {1},{ }, {5,6} };
►字符数组的定义
与以上同, 如 char c[10];
►字符数组的初始化
给数组元素逐个赋值如 char a[10]={‘z’,’h’,’o’,’n’,’g’,’G’,’u’,’o’,’‘};
用字符串赋值如 char a[ ]={“ZhongGuo”}; char a[ ]=“ZhongGuo”;
2. 指针
►概念
变量的指针: 一个变量的地址称之为“这个变量的指针”。
指针变量:如果专门使用一个变量来存放另一变量的地址,则该变量称为指针变量。
►指针变量的定义
基类型* 指针变量名
为了能够在程序运行时获得变量地址,以及能够使用指针所指变量的值,C语言提供了2个运算符:
①& 取地址运算符。
②* 指针运算符或“间接访问”运算符。
如&a 为变量a的地址, *point 为指针变量point所指向的存储单元的值。
3. Keil C51的指针类型
►基于存储器的指针
这些指针的长度可为1字节(idata *, data *, pdata *)或2字节(code *, xdata *)
如 char xdata *px; //在xdata存储器中定义了一个指向字符类型的指针,长度为2字节,值为0~0xffff。
char xdata *data pdx; //明确定义指针位于80C51内部存储区(data)中,其他同上例。
data char xdata *pdx; //与上例完全相同。
存储器类型定义既可放在定义开头,也可直接放在定义的对象之前。
►一般指针
一般指针包括3字节:2字节的偏移量和1字节的存储器类型。
其中第1个字节表示指针的存储器类型,存储器类型编码如下:
如一个一般指针指向地址为0x1234的xdata类型数据时,其指针值如下表。
4. 结构
►定义结构的类型
struct 结构名
{ 结构成员说明
};
结构成员说明的格式为:
类型标识符成员名;
例 struct