- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C++程序设计基础 C++程序设计基础 第一章 C++基础知识 第二章 基本控制结构程序设计 第三章 函数 第四章 类与对象 第五章 指针与数组 第六章 动态内存分配 第七章 继承与多态 第八章 流类库和输入/输出 第五章 指针与数组 5. 1 指针与地址 5. 2 this指针 5. 3 数组与指针 5. 4 多维数组与指针 5. 5 指针数组 5. 6 函数指针及其应用 3. 1 指针与地址 3. 1. 1 指针的概念 在高级语言编程中,面对的是变量名,而源程序经过编译系统处理后,每一个变量在程序执行前将分配在内存指定的位置上。程序执行中,计算机是到与变量名对应的内存地址去处理存储在其中的数据。 这种按变量的地址直接存取变量的方法称为“直接访问”方式。存储变量的内存空间的首地址称为该变量的地址。 如果将一个变量的地址放在另一个变量中,则存放地址的变量称为指针(Pointer)型变量。这时存取变量,也可以间接的由指针变量取得该变量的地址进行,这称为“间接访问”方式。 由于指针变量中的值是另一个变量的地址,因此习惯上形象地称为指针变量指向该变量。 指针变量中的值也简称为指针,所以指针就是地址。 指针类型可以按它指向的变量的类型区分。基本类型和派生类型都有对应的指针类型,包括类(class),甚至还有指向指针的指针,即二级指针。 为什么要明确指针是指向哪一种数据类型的呢?因为指针中只放变量首地址是不够的,还要知道该类型的变量占多少内存以及数据又是怎样组织的。例如,整型数占4个字节,浮点数占4个字节,字符型占1个字节,并且它们有各自不同的存储组织方式。 指针类型变量定义语句格式如下: 《存储类型》类型*变量名1《,*变量名2…》; 这里*是一个定义变量为指针的说明符,而不是指针变量的一部分。*前后可以加空格,也可不加。必须指出的是,定义时每一个指针变量都需要一个指针变量说明符。例如: int *lp1,*lp2; 5. 1. 2 指针变量的赋值、初始化与简单应用 不能给指针变量随意赋一个数值当地址值,只能取一个已经分配了内存的变量的地址赋给指针变量。C++中有两个专门的运算符与指针有关。 “&”取地址运算符,作用于内存中一个可寻址的数据(如:变量,对象和数组元素等),操作的结果是获得该数据的地址。运算结果不可作为左值。 “*”间接引用运算符,作用于一个指针类型的变量,访问该指针所指向的内存数据。因结果是内存中可寻址的数据,所以它可以作为左值。 可以通过指向对象或结构变量的指针变量来访问其公有成员时,这时要使用运算符符“->”,即在指针变量名后加“->”,再加公有成员名就可以了。 对指向普通变量的指针变量,不能做算术、逻辑类的运算。 函数可以用指针变量作参数,但一般提倡使用引用而不提倡使用指针变量。 5. 2 this指针 同一个类可以创建很多个对象,但它们共用同一份成员函数的拷贝。既然是同一份拷贝,那么成员函数又怎么知道是取哪一个对象的成员数据呢?其实当调用一个成员函数时,系统自动产生一个隐藏的指针,这个指针称为this指针,它始终指向产生这个调用的对象,并将该指针作为一个参数自动传递给该成员函数。这就是说,成员操作符总是要使用的,只不过在对象内是隐式的,而在对象外是显式的。即在对象内省略了this指针。 5. 3 一维数组与指针 5. 3. 1 一维数组与数组元素 (1)数组是一种组合类型,它不能作为一个整体进行访问和处理,只能按元素进行个别的访问和处理。 (2)C++数组第一个元素的下标为0,而不是1,且下标表达方式是固定的。 (3)数组元素在内存中是从低地址开始顺序排列,各元素的存储单元占用内存大小相同,各元素的存储单元之间没有空隙。 5. 3. 2 数组名、指针和指针运算 在C++中指针和数组的关系十分紧密。数组名被看做该数组的元素在内存中的首地址。 数组名在表达式中被自动转换为一个指向数组第一个元素的指针变量。数组名是地址,当然也是指针,但数组名中所放的地址是不可改变的,所以称指针常量。 数组名指向的目标是数组元素,而不是数组整体。 int array[10] = {1,2,3,4,5,6,7,8,9,10}; 下标运算符是以指针作为操作数的,array[i]被编译系统解释为*(array + i),即表示为array所指(固定
您可能关注的文档
最近下载
- 河南省2019年对口升学网络选择和判断题.docx VIP
- 兴陇中学七年级语文期中复习《骆驼祥子》单选题.docx VIP
- 2025至2030年中国电站铸锻件市场分析及竞争策略研究报告.docx
- 2025年湖南选调真题及答案.docx VIP
- 防范电信网络诈骗宣传课件 PPT.pptx VIP
- 第4课 直面挫折 积极应对中职思想政治《心理健康与职业生涯》(高教版基础模块).pdf VIP
- 广西书院文化研讨.pdf VIP
- 高考古代文化常识判断题(一).docx VIP
- 前十题单选,后十题多选,每题5分,满分100分。.docx VIP
- 12K101-1~4 通风机安装(2012年合订本).pdf VIP
文档评论(0)