资源描述:
《单片机接口技术(C51版).ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、单片机接口技术(C51版)第五章 指针、结构、联合和枚举内容概述指针是C51语言的精华也是难点。本章主要介绍指针的概念、定义指针的方法,介绍指向一维数组、二维数组、字符数组的指针使用方法,指针数组的概念以及指针作为函数参数的使用方法。结构、联合和枚举是另外的构造型数据,本章介绍了这三种类型数据的定义、初始化以及使用方法。教学目标1.理解指针的概念,掌握指针与地址的关系,能区别指针变量与变量的指针,根据需要定义并使用指针变量,理解地址运算的方法。2.理解指针与数组的关系,熟练使用指针指向一维数组、二维数组,理解
2、并掌握利用指针表达数组元素的几种表现形式。3.能利用指针指向字符数组,处理字符串。4.理解指针数组的概念,该数组的元素是指针。5.掌握指针作为函数形参的使用方法,理解指针作为函数形参传递整个数组的作用。6.了解结构体的作用及应用场合,能定义并使用结构体变量,掌握结构变量成员的引用方法。能定义并使用结构数组,会引用结构数组元素成员,7.掌握结构指针的定义方法,利用结构指针访问结构变量的成员。8.了解结构变量的作为结构成员的结构嵌套定义方法以及位结构的概念。9.理解联合的概念,能定义并使用联合体变量,掌握联合与结
3、构的区别。10.能定义并使用枚举变量。5.1指针5.1.1指针和地址5.1.1.1指针变量的定义C51语言中,对于变量的访问形式之一,就是先求出变量的地址,然后再通过地址对它进行访问,这就是这里所要论述的指针及其指针变量。所谓变量的指针,实际上指变量的地址变量的地址虽然在形式上好象类似于整数,但在概念上不同于以前介绍过的整数,它属于一种新的数据类型,即指针类型。C51中,一般用“指针”来指明这样一个表达式&x的类型,而用“地址”作为它的值,也就是说,若x为一整型变量,则表达式&x的类型是指向整数的指针,而它的
4、值是变量x的地址。同样,若doubled;则&d的类型是指向双精度数d的指针,而&d的值是双精度变量d的地址。所以,指针和地址是用来叙述一个对象的两个方面。&x、&d的类型是不同的,一个是指向整型变量x的指针,而另一个则是指向双精度变量d的指针。指针变量的一般定义为:类型标识符 *标识符;其中标识符是指针变量的名字,标识符前加了“*”号,表示该变量是指针变量“类型标识符”表示该指针变量所指向的变量的类型。一个指针变量只能指向同一种类型的变量定义一个指针类型的变量。int*ip;首先说明了它是一指针类型的变量,
5、注意在定义中不要漏写符号“*”,否则它为一般的整型变量了。另外,在定义中的int表示该指针变量为指向整型数的指针类型的变量,有时也可称ip为指向整数的指针。ip是一个变量,它专门存放整型变量的地址。指针变量在定义中允许带初始化项。如:inti,*ip=&i;。C51中规定,当指针值为零时,指针不指向任何有效数据,有时也称指针为空指5.1.1.2指针变量的引用既然在指针变量中只能存放地址,因此,在使用中不要将一个整数赋给一指针变量.下面的赋值是不合法的:int*ip;ip=100;假设:inti=200,x;i
6、nt*ip;可以把i的地址赋给ip:ip=&i;此时指针变量ip指向整型变量i,假设变量i的地址为1800,这个赋值可形象理解为下图所示的联系。ipi┏━━━┓ ┏━━━┓ ┃1800╂──→┃200 ┃ ┗━━━┛ ┗━━━┛图5-1-1给指针变量赋值以后我们便可以通过指针变量ip间接访问变量i,例如:x=*ip;运算符*访问以ip为地址的存贮区域,而ip中存放的是变量i的地址,因此,*ip访问的是地址为1800的存贮区域(因为是整数,实际上是从1800开始的两个字节),它
7、就是i所占用的存贮区域,所以上面的赋值表达式等价于x=i;另外,指针变量和一般变量一样,存放在它们之中的值是可以改变的,也就是说可以改变它们的指向,假设inti,j,*p1,*p2; i='a';j='b'; p1=&i; p2=&j;则建立如图5-1-2所示的联系:p1 i ┏━━━┓ ┏━━━┓ ┃ ╂─→┃'a' ┃ ┗━━━┛ ┗━━━┛ p2
8、 i ┏━━━┓ ┏━━━┓ ┃ ╂─→┃'b' ┃ ┗━━━┛ ┗━━━┛图5-1-2赋值运算结果这时赋值表达式:p2=p1;就使p2与p1指向同一对象i,此时*p2就等价于i,而不是j,图5-1-2就变成图5-1-3所示:p1 i ┏━━━┓ ┏━━━┓