第7节_C51的指针.ppt

  1. 1、本文档共31页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
性格决定命运, 专注成就人生 源智天下 1-* 北京源智天下科技有限公司 联系方式: 联系方式: 北京源智天下科技有限公司 21天学51单片机开发 第七讲:C51的指针 课程安排 地址和指针概述 指针变量的声明 指针变量的赋值 指针变量的运算符 特殊的指针类型——数组指针 特殊的指针类型——字符指针 地址和指针概述 内存单元是单片机存储器中的最小存储单位,通常一个字节称为一个内存单元。 单片机内存单元的编号也就是地址。 指针是一种特殊的数据类型,用指针声明的变量称为指针变量。 指针变量的值实际上是一个地址,是单片机内存单元的编号。 单片机中不同的数据类型所占用的内存单元数和它的大小有关。 指针变量的声明 声明一个指针变量具有特殊的形式,如下所示: 类型标识符 *指针名; 类型标识符 *指针名1, *指针名2,…; 在声明指针变量时,应注意如下几点: 在定义指针变量时,指针名前的 “*”不能省略。 同一个指针变量只能指向同一类型的变量。 指针变量的赋值 指针变量的赋值就是给予一个合理的地址值。 指针变量被声明后可以指向任何同类型的变量。 C51中使用地址运算符“”获取变量的首地址。 如果定义指针变量时不进行赋值,该指针变量被初始化为NULL。 指针变量的赋值 在C51语言中提供了灵活的指针变量赋值方法,主要有如下几种: 在声明时赋值 动态赋值 指针变量之间传递 特殊的指针变量赋值——数组 特殊的指针变量赋值——字符串 特殊的指针变量赋值——函数入口 在声明时赋值 在声明时赋值的方法比较简单,而且不占用程序执行时间。 需要使用取地址运算符来完成。 典型的在声明时赋值语句,示例如下。 int a; int *p=a; //初始化赋值,a表示取变量a的首地址 动态赋值 指针变量也可以在程序执行时动态改变指针的值。 需要使用取地址运算符来完成。 典型的动态赋值语句,示例如下。 int a; int *p; p=a; //利用a获得变量a的首地址,然后赋值给p 指针变量之间传递 C51中可以将一个指针变量传递给另一个指针变量。 在指针变量之间进行地址传递时,指针变量的类型应该一致。 int a=15,b=26; //定义变量和初始化 int*p1=a,*p2=b; //定义指针变量和初始化 p2=p1; //把a的地址赋予指针变量p2 *p2=*p1; //把p1指向的内容赋给p2所指的区域 特殊的指针变量赋值——数组 引用数组时应该逐个元素引用,而不能直接引用数组名。 数组名代表的是数组存放的首地址。 可以通过引用数组名而将数组首地址赋值给指针变量。 int a[7],*p; //声明数组以及指针变量 p=a; //数组名表示数组的首地址,故可赋予指向数组的指针变量 p=a[0]; //数组第一个元素的地址也是整个数组的首地址 特殊的指针变量赋值——字符串 C51语言中没有字符串变量,只有字符串常量。 可以把字符串的首地址赋予指向字符类型的指针变量。 char *p; //声明字符型指针变量 p=Hello everyone!; //赋值 char *p=Hello everyone!; 特殊的指针变量赋值——函数入口 指针变量还可以指向函数。 对指向函数的指针变量赋值,就是把函数的入口首地址赋予指向函数的指针变量。 用函数为指针变量赋值注意事项 注意其表示方法两对括号都不能省略。 对指针变量pf赋值时,函数名fun前没有地址运算符“” 。 在C51语言中,指针变量若不带初始化项,其将被初始化为NULL。 空指针常用于调用一个带有返回指针的函数时。 指针变量的运算符 C51语言中提供了专门的运算符来用于指针的操作: 取地址运算符 取值运算符* 这些运算符可以完成取地址、赋值、取值等操作。 指针变量之间也可以进行一些关系和算术运算。 取地址运算符 取地址运算符就是用于提取变量的地址。 取地址运算符是单目运算符,符合自右至左的结合性。 取地址运算符的使用格式如下: 变量名 取值运算符* 取值运算符*就是提取指针变量所指向内存单元中的数据内容。 取值运算符*也是单目运算符,同样符合自右至左的结合性。 取值运算符*的使用格式如下: *指针变量名 取值运算符* 取内容运算符*和指针变量声明中指针说明符*是不同的,读者应该分清两者的区别。 在指针变量说明中,“*”是类型说明符,表示其后是指针类型的变量。 表达式中出现的“*”则是一个取值运算符,用来表示指针变量所指向的地址中的数据值。 指针变量的运算 指针变量是特殊的一种变量,其同样也可以参与一些运算,但是有很大的局限性。 指针变量可以参与的

文档评论(0)

kehan123 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档