




已阅读5页,还剩15页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第十章指针指针是C语言中的一个重要的概念 也是c语言的一个重要特色 正确而灵活地运用它 可以有效地表示复杂的数据结构 能方便地使用字符串 有效而方便地使用数组 在调用函数时能得到多个的值 能直接处理内存地址等 这对设计系统软件是很必要的 掌握指针的应用 可以使程序简洁 紧凑 高效 每一个学习和使用C语言的人 都应当深入地学习和掌握指针 可以说 不掌握指针就不掌握C语言的精华 重点 1 指针的概念 2 指针变量的概念 3 指针变量的定义及引用 4 指针变量作为函数的参数 难点 指针变量作为函数的参数 10 1指针的概念 一 内存的访问方式1 直接访问 通过变量名对内存单元进行存取操作 200020022004 ijk 369 内存用户数据区 如 i 2 j 6 k 9printf d i 该输出语句是这样执行的 根据变量名与地址的对应关系 该关系在编译时确定 找到变量的地址2000 然后将从2000开始的两个字节的内容 即3 取出后输出 10 1指针的概念 2000200220043010 ijki p 3692000 内存用户数据区 2 间接访问将变量i的地址存放在另一个变量中 假设变量i p用来存放整型变量的地址 它被分配3010 3011两个字节 可用下例语句将i的地址存放到i p中 i p i 即i p中的的值为2000此时 要存取变量的值 可以先找到存放 i 地址的变量i p 从中取出i的地址 2000 然后到2000 2001字节取出i的值3 两个概念 1 指针 即地址一个变量的地址称为该变量的指针 通过变量的指针能够找到该变量 2 指针变量 专门用于存储其它变量地址的变量指针变量i p的值就是变量i的地址 10 1指针的概念 变量的指针就是变量的地址 存放变量地址的变量就是指针变量 为表示指针变量和它指向的变量之间的关系 用指针运算符 表示 即 i p 就是i p所指向的变量 10 2变量的指针和指向变量的指针变量 因此 下面两个语句的作用相同 i 3 将3直接赋给变量i i p 将3赋给指针变量i p所指向的变量 10 2变量的指针和指向变量的指针变量 1 指针变量的定义一般形式 类型标识符 变量名如 int p1 char p2 float p3 说明 表示该变量为指针型变量 指针变量名为p1 p2 p3定义指针变量时必须指定基类型 它表示指针变量中存放的地址所指向的是什么类型的数据 给指针变量赋值 如 p1 i 将i的地址赋给p1 注 一般不直接赋数值 2 指针变量的引用用指针变量对变量赋值 如 inti j p p 注意 p是地址变量 而 p是非地址变量 与i是一回事 为指针运算符或叫指向运算符 间接运算符 定义后 p I后 p 3后 Ijp 例10 1通过指针变量访问整型变量main inta b int pointer 1 pointer 2 a 100 b 10 pointer 1 pointer 1 a对吗 运行结果为 100 10100 10 关于运算符 p1的含义 p1相当于 p1 等于 p1 a a p1 a的含义 a相当于 a p1 a 2 优先级处于第二位 见附录 3 自增自减运算如 inta b p p 当p为1000 则p 为1004 例10 2输入a和b两个整数 按先大后小的顺序输出a和b main int p1 p2 p a b scanf d d printf na d b d n a b printf max d min d n pl p2 运行情况如下 输入5 9回车 输出结果 a 5 b 9max 9 min 5 交换地址 指针变量 使p1指向大数b 而变量a b未变 a b 5 9 b 5 a 9 p1a p2b p p p1a p2b 3 指针变量作为函数参数功能 将一个变量的地址传送到另一函数中 实参和形参均用指针 例10 3即对输入的两个整数按大小顺序输出 用函数处理 运行情况如下 输入 5 9回车输出 9 5 voidswap int p1 p2 intp p p1 p1 p2 p2 p voidmain inta b int pointer 1 pointer 2 scanf d if a b swap pointer 1 pointer 2 printf n d d n a b 函数调用过程 下面例子能不能正确交换数据 voidswap pl p2 int p1 p2 int p p pl p1 p2 p2 p voidmain inta b int pointer 1 pointer 2 scanf d d a b pointer l a pointer 2 b if a b swap pointer l pointer 2 printf n d d n pointer 1 pointer 2 出错的原因是参量不是双向传递 a b 5 9 a b 5 9 b 5 b 5 a 9 a 9 Pointer 1ap1ap1apointer 1a pointer 2bp2bp2bpointer 2b a b c d a b 如果想通过函数调用得到n个要改变的值 可以用如下方法 在主调函数中设n个变量 用n个指针变量指向他们 然后将指针变量作实参 将这n个变量的地址传给所调用的函数的形参通过形参指针变量 改变该n个变量的值 主调函数中就可以使用这些改变了值的变量 例10 4输入a b c三个整数 按大小顺序输出 P228 swap int pt1 int pt2 intp p pt1 pt1 pt2 pt2 p exchange int q1 int q2 int q
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 煤气培训考试题及答案
- 民兵常识考试题及答案
- 招行唐山面试题及答案
- 数学除法面试题及答案
- 元素钠考试题及答案
- 重症肺炎考试题及答案
- 2025年血透室发生火灾演练脚本
- 工地太阳能基础知识培训课件
- 工地切割机安全知识培训课件
- 2025年镗工(初级)职业技能鉴定试题集
- 2025年静宁县城区学校选调教师考试笔试试卷【附答案】
- 2025年乐清辅警考试题库及答案
- 血标本采集考试试题附有答案
- 浙江省温州市龙湾区2024-2025学年七年级下学期学业水平期末检测数学试题
- 2025年江苏省苏豪控股集团有限公司校园招聘笔试备考试题及答案详解(必刷)
- (完整)中小学“学宪法、讲宪法”知识竞赛题库及答案
- 2025年行政执法人员执法证考试必考多选题库及答案(共300题)
- 2024年自投光伏安装合同范本
- 乳制品配送服务应急处理方案
- 塔式起重机群塔安全作业施工方案完整
- WB/T 1057-2015商用车背车装载技术要求
评论
0/150
提交评论