已阅读5页,还剩32页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
,第五章 指针和引用,指针是一种特殊的数据类型。 指针概念是C+语言中较难理解和较难掌握的概念之一。 本章介绍指针的概念、定义、运算等内容。,指针变量是一种特殊的变量,变量中存放的不是某种数据类型的数据,而是另一个变量或常量的地址。,5.1 指针概念,如有定义: int value=150; char ch=M; 并执行赋值语句: pv= /pv holds the address of value 由于pv中存放的是value变量的地址,pc中存放的是ch变量的地址,故称pv和pc为指针变量。简称为指针(Pointer)。,指针指向的对象称为目标或目标变量(常量)。如图7.1所示:,value,ch,*pv,*pc,图1 内存空间,1000H,1050H,C+规定: 目标或目标变量可以用指针变量名前加上运算符“ * ”表示。 pv的目标变量value可表示为*pv, pc的目标变量ch可表示为*pc, 即 *pv和value等效 *pc和ch等效 而&pv和&pc表示针变量本身的地址,当指针变量为2个字节时, 最大访问地址为:,指针的定义 指针变量也必须先定义后使用 定义的一般格式: 类型定义符 *指针变量名; 其中:类型定义符指针指向对象的数据类型 “*”说明符,表示其后的标识符是指针变量,而不是 一般变量。,例如: int *ptr ; char *name ; float *pf ; 其中,定义ptr,name,pf分别为指向整型、字符型和浮点型 数据的指针。 const int *ptr; / pointer to int const const char *cpc const float *point 其中,ptr,cpc,point为指向常量的指针。 注意: 指针变量可以与其他变量一起定义,如: int a, bb,*c; char *p, *q, ch; 指针变量也可定义为全局,静态和局部的指针。,例如: int num, *pn; char color , *pc; 执行语句 pn= 这里,“*”作为访问目标变量的运算符,在定义指针时, “*”作为说明符。注意使用上的区别。,5.2 指针赋值,使用指针前,必须给已定义指针变量赋以指向目标变量的地址值。“&”操作符可获取变量的地址。,指针赋值的几种情况: 同种数据类型的指针变量之间可以相互赋值。 int a, *pa, *pb; pa= /正确,例:有关指针概念的程序 /ex5_3.cpp #include void main( ) int w, *p = ,结果: w=800 &w=0x0012FF7C *p=800 &p=0x0012FF78 p=0x0012FF7C,指针变量的地址 指针也是变量,指针变量的地址是指它本身的内存地址,如图1所示。,图示如下:,5.3 指针运算 指针运算实质上是地址运算。 1、赋值运算 2、取地址运算“ 则 &(*ptr) 表示指针ptr *(&x) 表示变量x,图2,3、指针与整数的加减运算 在数组中,指针变量加上或减去一个整数n,表示: 指针由当前所指向的位置向前或向后移动n个数据元素的位置。 移动后的实际地址为: p n*sizeof(数据类型) 4、指针的关系运算 指向同种数据类型的指针可作关系运算,表示它们所存放的 地址之间的关系。 , = = , != 指针运算示例:课本P57例4.2,/ex5_2a.cpp #include void main( ) int a10, *p, *q; cout“a=“aendl; cout“a+1=“a + 1endl; cout“a+2=“a + 2endl; p = ,cout“p=“pendl; cout“q=“qendl; p = ,例 /ex5_3.cpp #include void main( ) char *p1, *p2; p1 = “C Program“; p2 = p1 + 8; while (p2 = p1) cout*p2; p2-; coutendl; ,5.4 指针与数组,C+规定定义一个数组时,用数组名存放该数组在内存中的首地址。 当把数组名赋予一个指针变量后,该指针指向数组,可以通过指针移动方式访问数组元素。,例如: int a20, *p; p=a; 则下标为i 的元素可表示为: ai, *(a+i), pi, *(p+i), 对应地址可表示为: &ai, a+i, &pi, p+i,注意: 数组名是指针常量,不是指针变量,不能给数组名赋值。,数组元素的表示方法示例,例如:下面程序是用指针方式访问数组元素,计算数组元素之和。 #include void main() int iarray10=0,2,4,6,8,10,12,14,16,18; int sum=0;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高中生物实验教学中实验设计能力培养的教学方法研究教学研究课题报告
- 简易二手车转让合同
- 苏东坡传读后感汇编15篇
- 26年基础护理技能全民安康课件
- 2024年食品加工厂转租合作协议三篇
- 2026届河北省滦州第一中学高三3月模拟考试化学试题试卷含解析
- 2026届辽宁省阜新蒙古族自治县蒙古族实验中学下学期高三化学试题化学试题含解析
- 肾乐软胶囊对实验性肾病综合征大鼠的疗效及作用机制探究
- 肺腺癌患者外周血单个核细胞集落培养的关键技术与应用探索
- 肺癌血管生成拟态的特性、与凋亡的关联及临床意义探究
- 供应链中的再制造与回收
- ARCGIS中提取坡位方法
- 解除党纪处分影响期申请书
- 加油站动火作业安全管理制度
- 电力电子技术第二版张兴课后习题答案
- 人们通过竞争才会取得更大的成功
- LY/T 2103-2013根径立木材积表编制技术规程
- GB/T 9445-2015无损检测人员资格鉴定与认证
- 第五章 井间地震
- 国际商务谈判课件(同名951)
- 高二期中考试后家长会课件
评论
0/150
提交评论