第7章C51的指针.ppt
《第7章C51的指针.ppt》由会员分享,可在线阅读,更多相关《第7章C51的指针.ppt(30页珍藏版)》请在第壹文秘上搜索。
1、21天学天学51单片机开发单片机开发第七讲:第七讲:C51的指针的指针 1-2课程安排课程安排地址和指针概述地址和指针概述 指针变量的声明指针变量的声明指针变量的赋值指针变量的赋值 指针变量的运算符指针变量的运算符特殊的指针类型特殊的指针类型数组指针数组指针 特殊的指针类型特殊的指针类型字符指针字符指针 1-3地址和指针概述地址和指针概述内存单元是单片机存储器中的最小存储单位,通常内存单元是单片机存储器中的最小存储单位,通常一个字节称为一个内存单元。一个字节称为一个内存单元。单片机内存单元的编号也就是单片机内存单元的编号也就是地址地址。指针是一种特殊的数据类型,用指针声明的变量称指针是一种特殊
2、的数据类型,用指针声明的变量称为指针变量。为指针变量。指针变量的值实际上是一个地址,是单片机内存单指针变量的值实际上是一个地址,是单片机内存单元的编号。元的编号。单片机中不同的数据类型所占用的内存单元数和它单片机中不同的数据类型所占用的内存单元数和它的大小有关。的大小有关。1-4指针变量的声明指针变量的声明 声明一个指针变量具有特殊的形式,如下所示:声明一个指针变量具有特殊的形式,如下所示:类型标识符类型标识符*指针名指针名;类型标识符类型标识符*指针名指针名1,*指针名指针名2,;在声明指针变量时,应注意如下几点:在声明指针变量时,应注意如下几点:在定义指针变量时,指针名前的在定义指针变量时
3、,指针名前的“*”不能省略。不能省略。同一个指针变量只能指向同一类型的变量。同一个指针变量只能指向同一类型的变量。1-5指针变量的赋值指针变量的赋值 指针变量的赋值就是给予一个合理的地址值。指针变量的赋值就是给予一个合理的地址值。指针变量被声明后可以指向任何同类型的变量。指针变量被声明后可以指向任何同类型的变量。C51中使用地址运算符中使用地址运算符“&”获取变量的首地址。获取变量的首地址。如果定义指针变量时不进行赋值,该指针变量被初如果定义指针变量时不进行赋值,该指针变量被初始化为始化为NULL。1-6指针变量的赋值指针变量的赋值在在C51语言中提供了灵活的指针变量赋值方法,主语言中提供了灵
4、活的指针变量赋值方法,主要有如下几种:要有如下几种:在声明时赋值在声明时赋值 动态赋值动态赋值 指针变量之间传递指针变量之间传递 特殊的指针变量赋值特殊的指针变量赋值数组数组 特殊的指针变量赋值特殊的指针变量赋值字符串字符串 特殊的指针变量赋值特殊的指针变量赋值函数入口函数入口 1-7在声明时赋值在声明时赋值 在声明时赋值的方法比较简单,而且不占用程序执在声明时赋值的方法比较简单,而且不占用程序执行时间。行时间。需要使用取地址运算符需要使用取地址运算符&来完成。来完成。典型的在声明时赋值语句,示例如下。典型的在声明时赋值语句,示例如下。int a;int*p=&a;/初始化赋值,&a表示取变量
5、a的首地址1-8动态赋值动态赋值 指针变量也可以在程序执行时动态改变指针的值。指针变量也可以在程序执行时动态改变指针的值。需要使用取地址运算符需要使用取地址运算符&来完成。来完成。典型的动态赋值语句,示例如下。典型的动态赋值语句,示例如下。int a;int*p;p=&a;/利用&a获得变量a的首地址,然后赋值给p1-9指针变量之间传递指针变量之间传递 C51中可以将一个指针变量传递给另一个指针变量。中可以将一个指针变量传递给另一个指针变量。在指针变量之间进行地址传递时,指针变量的类型在指针变量之间进行地址传递时,指针变量的类型应该一致。应该一致。int a=15,b=26;/定义变量和初始化
6、int*p1=&a,*p2=&b;/定义指针变量和初始化p2=p1;/把a的地址赋予指针变量p2*p2=*p1;/把p1指向的内容赋给p2所指的区域1-10特殊的指针变量赋值特殊的指针变量赋值数组数组 引用数组时应该逐个元素引用,而不能直接引用数引用数组时应该逐个元素引用,而不能直接引用数组名。组名。数组名代表的是数组存放的首地址。数组名代表的是数组存放的首地址。可以通过引用数组名而将数组首地址赋值给指针变可以通过引用数组名而将数组首地址赋值给指针变量。量。int a7,*p;/声明数组以及指针变量p=a;/数组名表示数组的首地址,故可赋予指向数组的指针变量p=&a0;/数组第一个元素的地址也
7、是整个数组的首地址1-11特殊的指针变量赋值特殊的指针变量赋值字符串字符串 C51语言中没有字符串变量,只有字符串常量。语言中没有字符串变量,只有字符串常量。可以把字符串的首地址赋予指向字符类型的指针变可以把字符串的首地址赋予指向字符类型的指针变量。量。char*p;/声明字符型指针变量p=Hello everyone!;/赋值char*p=Hello everyone!;1-12特殊的指针变量赋值特殊的指针变量赋值函数入口函数入口 指针变量还可以指向函数。指针变量还可以指向函数。对指向函数的指针变量赋值,就是把函数对指向函数的指针变量赋值,就是把函数的入口首地址赋予指向函数的指针变量。的入口
8、首地址赋予指向函数的指针变量。1-13用函数为指针变量赋值注意事项用函数为指针变量赋值注意事项注意其表示方法两对括号都不能省略。注意其表示方法两对括号都不能省略。对指针变量对指针变量pf赋值时,函数名赋值时,函数名fun前没有地址运算前没有地址运算符符“&”。在在C51语言中,指针变量若不带初始化项,其将被语言中,指针变量若不带初始化项,其将被初始化为初始化为NULL。空指针常用于调用一个带有返回指针的函数时。空指针常用于调用一个带有返回指针的函数时。1-14指针变量的运算符指针变量的运算符 C51语言中提供了专门的运算符来用于指针的操作:语言中提供了专门的运算符来用于指针的操作:取地址运算符
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C51 指针