- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第7章109间接访问-指针讲解
第7章 间接访问—指针 指针的概念 指针运算与数组 动态内存分配 字符串再讨论 指针作为函数参数和返回值 指针数组与多级指针 指向多维数组的指针 指向函数的指针 指针介绍 本章将介绍C++语言的一个重要的特性:指针,为了成为一个优秀的C++语言程序员,你必须掌握指针并熟练地使用它们。 指针的概念 指针就是把地址作为数据处理 指针变量:存储地址的变量 变量的指针:当一个变量存储另一个变量的地址时,那我们说它就是那个变量的指针 使用指针的目的:提供间接访问 指针的概念 续 如在某一程序中定义了 int x = 2; 如系统给x分配的空间是1000号单元,则指向x的指针是另一个变量p,p中存放的数据为1000 1000号单元的内容有两种访问方式: 访问变量x(直接访问) 访问变量p指向的单元的内容(间接访问) 定义指针变量 定义指针变量要告诉编译器该变量中存放的是一个地址。 指针变量的主要用途是提供间接访问,因此也需要知道指针指向的单元的数据类型 指针变量的定义 类型标识符 *指针变量; 如:int *intp; double *doublep; int *p, x, *q; 指针变量的操作 如何让指针指向某一变量?因为我们不知道系统分配给变量的真正地址是什么。 用地址运算符 “” 解决。如表达式 “x” 返回的是变量 x 的地址。如:intp = x; 运算符后面不能跟常量或表达式。如 2 是没有意义的,(m * n + p )。也是没有意义的 如何通过指针变量处理和改变它所指向的单元的值? 用引用运算符 “*” 解决。如 *intp 表示的是 intp 指向的这个单元的内容。如:*intp = 5 等价于 x = 5 在对 intp 使用引用运算之前,必须先对 intp 赋值 指针实例 指针使用 指针变量可以指向不同的变量。如上例中intp指向x,我们可以通过对intp的重新赋值改变指针的指向。如果想让intp指向y,只要执行intp=y就可以了。这时,intp与x无任何关系。 同类的指针变量之间可相互赋值,表示二个指针指向同一内存空间。 空指针 指针没有指向任何空间 空指针用常量NULL表示,NULL的值一般赋为0 不能引用空指针指向的值 指针变量的使用 设有定义 int x, y; int *p1,*p2; 指针实例 指针的初始化 指针在使用前必须初始化。 和别的变量一样,定义指针不初始化是一个比较普通的错误。 没有初始化的指针可能指向任意地址,对这些指针作操作可能会导致程序错误。 NULL是一个特殊指针值,称为空指针。它的值为0。它可被用来初始化一个指针,表示不指向任何地址。 思考:int *p; *p = 5; 有什么问题? 第7章 间接访问—指针 指针的概念 指针运算与数组 动态内存分配 字符串再讨论 指针作为函数参数和返回值 指针数组与多级指针 指向多维数组的指针 指向函数的指针 指针运算和数组 指向数组元素的指针 数组元素是一个独立的变量,因此可以有指针指向它。如:p = a[1], p = a[i] 数组元素的地址是通过数组首地址计算的。如数组的首地址是 1000,则第i 个元素的地址是1000 + i * 每个数组元素所占的空间长度 指针与数组 在C++中,指针和数组关系密切,几乎可以互换使用 数组名可以看成是常量指针,对一维数组来说,数组名是数组的起始地址,也就是第0个元素的地址 如执行了p=array,则p与array是等价的,对该指针可以进行任何有关数组下标的操作 指针运算 指针+1表示数组中指针指向元素的下一元素地址; 指针-1表示数组中指针指向元素的上一元素地址; 合法的指针操作:p + k, p - k, p1 - p2 数组元素的指针表示 当把数组名,如 intarray,赋给了一个同类指针intp 后,intarray 的元素可以通过intp访问。第i个元素的地址可表示为 intp + i,第i个元素的值可表示为 *(intp + i)。 通过指针访问数组时,下标有效范围由程序员自己检查。 如输出数组 a 的十个元素 指针和数组的区别 虽然通过指针可以访问数组,但两者本质是不同的。 在定义数组时为数组的各个元素分配了全部的存储区,而在定义指针时,仅仅分配四个字节的存储区存放指针地址。只有把一个数组名付给了对应的指针后,指针才能当作数组使用 如有:int array[5], *intp; 第7章 间接访问—指针 指针的概念 指针运算与数组 动态内存分配 字符串再讨论 指针作为函数参数和返回值 指针数组与多级指针 指向多维数组的指针 指向函数的指针 动态分配 在C++语言中,每个程序需要用到几个变量,在写程序前就
您可能关注的文档
最近下载
- 2025年清洁服务项目投资风险评估报告.docx
- 智慧园区规划、建设与管理通用规范.docx VIP
- 2023年安徽省高考数学试卷真题(含答案逐题解析).pdf
- 建筑工地基孔肯雅热防控和应急方案.docx VIP
- (81页PPT)高处作业安全培训.pptx VIP
- GB 45673- 2025《危险化学品企业安全生产标准化通用规范》之“5.7 操作安全”审核检查单(2025A0).docx VIP
- GB 45673- 2025《危险化学品企业安全生产标准化通用规范》之“5.8 作业安全”审核检查单(2025A0).docx VIP
- 高处作业安全培训(83页).ppt VIP
- 传染病疫情应急预案.doc VIP
- 压水堆核电厂一回路系统与设备简介.ppt VIP
文档评论(0)