




已阅读5页,还剩26页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
21天学51单片机开发 第七讲 C51的指针 课程安排 地址和指针概述指针变量的声明指针变量的赋值指针变量的运算符特殊的指针类型 数组指针特殊的指针类型 字符指针 地址和指针概述 内存单元是单片机存储器中的最小存储单位 通常一个字节称为一个内存单元 单片机内存单元的编号也就是地址 指针是一种特殊的数据类型 用指针声明的变量称为指针变量 指针变量的值实际上是一个地址 是单片机内存单元的编号 单片机中不同的数据类型所占用的内存单元数和它的大小有关 指针变量的声明 声明一个指针变量具有特殊的形式 如下所示 类型标识符 指针名 类型标识符 指针名1 指针名2 在声明指针变量时 应注意如下几点 在定义指针变量时 指针名前的 不能省略 同一个指针变量只能指向同一类型的变量 指针变量的赋值 指针变量的赋值就是给予一个合理的地址值 指针变量被声明后可以指向任何同类型的变量 C51中使用地址运算符 获取变量的首地址 如果定义指针变量时不进行赋值 该指针变量被初始化为NULL 指针变量的赋值 在C51语言中提供了灵活的指针变量赋值方法 主要有如下几种 在声明时赋值动态赋值指针变量之间传递特殊的指针变量赋值 数组特殊的指针变量赋值 字符串特殊的指针变量赋值 函数入口 在声明时赋值 在声明时赋值的方法比较简单 而且不占用程序执行时间 需要使用取地址运算符 来完成 典型的在声明时赋值语句 示例如下 inta int p 初始化赋值 a表示取变量a的首地址 动态赋值 指针变量也可以在程序执行时动态改变指针的值 需要使用取地址运算符 来完成 典型的动态赋值语句 示例如下 inta int p p 利用 a获得变量a的首地址 然后赋值给p 指针变量之间传递 C51中可以将一个指针变量传递给另一个指针变量 在指针变量之间进行地址传递时 指针变量的类型应该一致 inta 15 b 26 定义变量和初始化int p1 把p1指向的内容赋给p2所指的区域 特殊的指针变量赋值 数组 引用数组时应该逐个元素引用 而不能直接引用数组名 数组名代表的是数组存放的首地址 可以通过引用数组名而将数组首地址赋值给指针变量 inta 7 p 声明数组以及指针变量p a 数组名表示数组的首地址 故可赋予指向数组的指针变量p 数组第一个元素的地址也是整个数组的首地址 特殊的指针变量赋值 字符串 C51语言中没有字符串变量 只有字符串常量 可以把字符串的首地址赋予指向字符类型的指针变量 char p 声明字符型指针变量p Helloeveryone 赋值 char p Helloeveryone 特殊的指针变量赋值 函数入口 指针变量还可以指向函数 对指向函数的指针变量赋值 就是把函数的入口首地址赋予指向函数的指针变量 用函数为指针变量赋值注意事项 注意其表示方法两对括号都不能省略 对指针变量pf赋值时 函数名fun前没有地址运算符 在C51语言中 指针变量若不带初始化项 其将被初始化为NULL 空指针常用于调用一个带有返回指针的函数时 指针变量的运算符 C51语言中提供了专门的运算符来用于指针的操作 取地址运算符 取值运算符 这些运算符可以完成取地址 赋值 取值等操作 指针变量之间也可以进行一些关系和算术运算 取地址运算符 取地址运算符 就是用于提取变量的地址 取地址运算符 是单目运算符 符合自右至左的结合性 取地址运算符 的使用格式如下 变量名 取值运算符 取值运算符 就是提取指针变量所指向内存单元中的数据内容 取值运算符 也是单目运算符 同样符合自右至左的结合性 取值运算符 的使用格式如下 指针变量名 取值运算符 取内容运算符 和指针变量声明中指针说明符 是不同的 读者应该分清两者的区别 在指针变量说明中 是类型说明符 表示其后是指针类型的变量 表达式中出现的 则是一个取值运算符 用来表示指针变量所指向的地址中的数据值 指针变量的运算 指针变量是特殊的一种变量 其同样也可以参与一些运算 但是有很大的局限性 指针变量可以参与的运算有如下几类 关系运算算术运算 指针变量的关系运算 指针变量参与关系运算 可以比较其所指向地址位置的高低 例如对于两个指针变量p和q 可参与的运算如下 若p q为真 则表示p1和p2指向同一地址 若pq为真 则表示p处于高地址位置 q处于低地址位置 若p q为真 则表示p的地址位置大于等于q的地址位置 指针变量的算术运算 指针变量参与算术运算 可用实现地址的增减操作 在C51语言中 指针变量和整数可进行简单的加 减运算 具体可以使用的运算如下 p np np pp p 特殊的指针类型 数组指针 对数组来说 数组名就是数组在内存存放的首地址 指针变量可以指向数组的首地址 指针变量也可以指向数组元素的地址 这里 我们重点讨论如下几种情况 指向一维数组的指针指向二维数组的指针指向一个由n个元素所组成的数组指针指针和数组的关系总结数组指针和指针数组 指向一维数组的指针 指向一维数组的指针是将指针变量指向一维数组的首地址或者某个元素的地址 数组元素在内存中是连续存放的 通过指针变量pp及其有关运算可以间接访问数组中的任何一个元素 例如 a i和pp i均表示数组元素a i 的地址 pp i 和 a i 都表示pp i和a i所指向元素的值 指向二维数组的指针 将一个指针指向二维数组 需要首先定义一个二维数组 示例如下 chara 3 4 a b c d e f g h i j k l 在C51语言中 这个二维数组a可以看成是由三个一维数组元素组成 其中每个一维数组元素又是一个包含有4个元素一维数组 指向二维数组的指针 二维数组的指针指向示意 如下图所示 对于二维数组a来说 a 0 a 1 a 2 可以看成是独立的一维数组名 其分别代表了所对应的数组的首地址 一般来说a i j代表第i行第j列元素的地址 即 a i j 指向一个由n个元素所组成的数组指针 在C51语言二维数组可用看成几个一位数组的组合 这几个一维数组为二维数组的各个行 但是如果需要对列元素进行操作该如何呢 在C51语言中 引入了一个指向由n个元素构成的数组指针 这样可以方便二维数组列元素的处理 其定义格式如下 类型标识符 指针名 n 指针和数组的关系总结 指针和数组有着十分紧密的关系 数组和指针的使用方法十分灵活 也很容易混淆 读者应该多加练习 一般来说 任何能由数组和数组下标完成的操作 也都完全可以用指针和指针的偏移量来实现 详细内容参阅书中介绍 数组指针和指针数组 指针数组是同一数据类型的多个指针变量构成的一个数组 在C51语言中 指针数组的定义格式如下 类型标识符 数组名 整型常量表达式 指针数组的运算规则 假设指针数组名为pch 其满足和一般的数组一样运算规则 pch指针数组元素的首地址 pch i为指针数组的第i个元素的地址 pch等价于pch 0 为该指针数组的第一个元素 pch i 等价于pch i 为数组的第i个元素 对于指针数组来说 其最大的优点体现在对多个字符串的处理上 特殊的指针类型 字符指针 字符串在C51语言中一直是有着特殊的地位 字符指针 其实就是指向字符类型的指针变量 采用字符指针可以对字符串常量进行操作 即用字符指针指向字符串 然后通过字符指针来访问字符串的存储区域 这里需要注意的是 由于字符常量的值不
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 代谢组学疾病标志物筛选-洞察及研究
- 动态环境自适应决策模型-洞察及研究
- 智能城市与地球安全集成研究-洞察及研究
- 职业教育地方经验报告
- 循环利用技术在纸容器行业中的推广策略-洞察及研究
- 宽带网络下的个性化学习模式-洞察及研究
- 摩托车质量检测技术优化-洞察及研究
- 湿地水质净化机制-洞察及研究
- 多行注释语义分析-洞察及研究
- 标牌制造业精益生产工具应用-洞察及研究
- 家庭资产配置与理财计划
- 文明实践集市活动方案
- 电能质量培训课件
- 中国服饰课件模板
- 啤酒音乐节活动方案
- 大豆种植订单合同协议书
- 快递超市转让合同范本
- 人工智能机器人教学课件
- 深圳临时工协议书
- 先天性甲状腺功能减退症诊治指南(2025)解读
- 二级建造师b证考试题库及答案
评论
0/150
提交评论