




已阅读5页,还剩12页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第八讲:指针,杨章伟e-mail:jtclass,课程内容安排,指针概述指针运算指针与数组指针与函数指针与字符串指向指针的指针综合练习思考和习题,指针概述,简单来说,指针是一个地址,其指向存储某一个数据的存储地址。此外,还有一个指针变量的概念,指针变量是一种特殊性质的变量。指针变量是把地址存放在一个变量中,然后通过先找出地址变量中的值(一个地址),再由此地址找到最终要访问的变量的方法,这就是指针变量及其访问方法,而地址变量就是指针。,指针概述,对于指针可以如此来理解,比如一个人要到某地去,不认识路,去问交警。然后交警把该地方的地址写在了一张纸上给了该问路人。那么交警写的地址就是指针,指向要去的地址,而那张纸就是指针变量,用于存储指针。例如,在内存中存储了一个变量a,其值为5,那么用通过指针访问该变量如图8-1所示。,定义指针,指针是一个变量,在程序中使用时,必须先声明,后使用。在指针声明的同时也可以进行初始化。指针的定义指出了指针的存储类型和数据类型,定义的语法形式如下:存储类型名数据类型*指针变量名例如,下面定义了名为p1,p2和p3的三个不同类型指针。int*p1;staticint*p2;char*p3;,指针的运算,指针运算是以指针变量所持有的地址值为运算量进行的运算。因此,指针运算的实质是地址的计算。由于指针是持有地址量的变量这一特性,指针的运算与普通变量的运算在种类上和意义上都是不同的。指针运算的种类是有限的,它只能进行算术运算、关系运算和赋值运算。,指针的间接访问,如果说明了一个指针,并使其值为某个变量的地址,则可以通过这个指针间接地访问在这个地址中存储的值。经过上面部分的学习已知,在C+语言中有两个有关指针的特别运算符:int*p=若上面声明的两个指针作p=q运算,其结果为1(true),也即指针p、q指向同一个变量。两指针相等的概念是两指针指向同一位置。因此,假设数据在内存中的存储逻辑是由前向后,那么指向后方的指针大于指向前方的指针。也就是说,对于两指针p和q之间的关系表达式:pq若p指向位置在q指向位置的前方,则该表达式的结果值为1,反之为0。,指针的赋值运算,当向指针变量赋值时,赋的值必须是地址常量或变量,不能是普通整数。指针赋值运算常见的有以下几种形式:把一个变量的地址赋予一个指向相同数据类型的指针把一个指针的值赋予相同数据类型的另外一个指针把数组的地址赋予指向相同数据类型的指针,指针与数组,指针在数组中使用较为频繁,事实上,由于数组名表示的是该数组的首地址,所以如果定义一个指针指向数组,则可如下例声明:inta10;int*pa=a;这个语句定义了一个指针pa,并把pa初始化为指向数组inta10的指针,即指针pa指向数组的第一个元素。这时,不需要使用取地址运算符“,指针与函数,利用指针作函数参数,可以方便地实现地址传递。函数可以返回指针,指针也可以指向函数。该节指针与函数中,读者要掌握如下三个方面的内容:指针作为函数参数指针型函数函数指针,指针与字符串,在C+语言中,可以定义一个字符数组,将字符串存放在该数组中,通过数组下标来访问所需的字符;也可以定义一个字符指针,通过指针的指向来访问所需的字符。如果要通过指针访问一个字符串,可以将这个指针指向此字符串,并利用指针的加1、减1操作实现对各个字符的访问。此外,C+提供了许多字符串处理的库函数,在前面一章数组中也提到过了,其中常用的有:strcat():字符串连接函数。strcmp():字符串比较函数。strcpy():字符串复制函数。strlen():字符串长度计算函数。,指向指针的指针,由于指针是一个变量,在内存中也占据一定的空间,具有一个地址,这个地址也可以利用指针来保存。因此,可以声明一个指针来指向它,这个指针称为指向指针的指针,也称为二级指针。一般来说,声明指向指针的指针的形式如下:存储类型数据类型*指针变量名例如,下面语句声明了一个指向指针的指针pp,其指向指针p。inti,*p=,综合练习,该范例将3个存储在变量中的数值进行降序排列,其使用到了引用作为函数的参数以及函数的调用。,代码清单,1#include2voidfun(int/输出变量的值26,思考和习
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公司多人合伙协议书范本
- 催款居间服务协议书范本
- 分包方物业服务合同范本
- 难点解析-京改版数学9年级上册期末测试卷【完整版】附答案详解
- 期货从业资格之《期货法律法规》考前冲刺测试卷讲解带答案详解(培优b卷)
- 期货从业资格之期货投资分析题库练习备考题及答案详解【新】
- 难点详解人教版7年级数学上册期末试题含完整答案详解【有一套】
- 期货从业资格之《期货法律法规》考试彩蛋押题及答案详解(基础+提升)
- 期货从业资格之期货投资分析模拟题库讲解有答案详解
- 兰州资源环境职业技术大学病理与病理生理期末考试历年机考真题集含答案详解【巩固】
- GB/T 45997-2025科技成果五元价值评估指南
- 理论中心组学习教育交流发言(五个进一步到位)
- 小学食堂供餐管理方案(3篇)
- 企业产学研用管理办法
- 2025年版义务教育体育与健康课程标准题库及答案(教师培训考试专用七套)
- 2025广东省中考数学试卷
- 工程事业部运营管理办法
- 2025汽车智能驾驶技术及产业发展白皮书
- 苯职业病防护课件
- 2025年铸牢中华民族共同体意识基本知识测试题及答案
- 2025年湖北省中考道德与法治真题(解析版)
评论
0/150
提交评论