- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第6章 指针和引用 6.1 指针 6.2 引用 6.1 指针 6.1.1 指针的概念 6.1.2 指针与数组 6.1.3 指针与字符串 6.1.4 指针与函数 6.1.5 动态内存分配 6.1.1 指针的概念 通常,系统对每个存储单元按其顺序进行编号,编号能唯一地确定任 何一个字节的位置,于是编号被形象地称为地址。 在程序运行时,系统将利用内存存储相关的数据。数据在内存中的存 储方式是:按其所属的数据类型,占据一定数量的连续内存单元。程序 中的每个变量在内存中的存储位置是不变的,具有固定的存储地址。 因为地址指示了字节在存储器中的位置,所以地址也被形象地称为指 针(pointer)。所谓指针是一个存储单元的地址值,用来存放地址(即 指针)的变量也称指针变量。在上下文意义明确的情况下,常常将指针 变量也简称为指针。 指针变量和普通变量一样占有一定的存储空间,但它与普通变量的区 别在于指针变量的存储空间中存放的不是普通的数据,而是一个地址 值——指针。 1.指针的声明 指针是一个变量,必须先声明后使用。指针声明的一般形式如下: 数据类型 * 标识符; 其中,标识符给出的是指针变量名,“*”号说明其后的标识符是一个指 针变量,数据类型可以是C++语言中任一合法的类型。比如: int *p1; //声明p1指向int型变量 double *p2; // 声明p2指向double型变量 在C++语言中定义指针变量时,以下形式均是合法的: int* p //*靠左 double * q //*两边都不靠 注意:指针声明语句中的数据类型是指针变量所指向的变量的数据类 型,即指针变量所指向的存储单元中存储数据的数据类型,并不是指针变 量本身的类型,任一指针变量本身数据值的类型都是unsigned long int。 例如,上例中声明的指针变量p,它表示指针变量p中存放的是int型变 量的地址,p为指向整型变量的指针。 指针也可以和其他变量同时声明。比如:int i,*p1; 2.指针变量运算符 ⑴ 取地址运算符 该运算符表示对“”后面的变量进行取地址运算。例如,在程序中声明了一个变量a,则a表示取变量a的地址,即变量a的首地址。 既然指针变量是用来存放地址的变量,就可以通过取地址运算符,将某一变量的地址赋值给指针变量。例如: int a=2,*p; p=a; 上面的语句定义了整型变量a和指向a的指针变量p,若变量a的地址 为0x00347FDF,则通过取地址运算符将变量a的地址赋值给指针变量 p,此时指针变量p的内容为变量a的地址0x00347FDF,如图6-1所示。 ⑵间接访问运算符* 该运算符也称“指针运算符”或“取内容运算符”,它后面必须是一个指 针变量,表示访问该指针变量所指向的变量,即访问指针所指向的存储 单元的内容。 每个变量在内存中都有一个固定的地址,而指针中保存的就是变量的 地址值。如果声明了一个指针,并使其值为某个变量的地址,则可以通 过这个指针间接地访问在这个地址中存储的变量。利用指针来访问变量 需要使用间接访问运算符“*”。例如: int i=1,*p=i; cout*p; 其中第2条语句将输出变量i的值1。当然,在利用指针访问变量的值时,也可以给变量赋值,比如 int i=1,*p=i; *p=2; cout*p; 将在屏幕上输出2。 注意: 不要将间接访问运算符“*”与声明指针时的“*”混为一谈。指针声明时的“*”是 指针变量声明的标示,可以称为“指针指示符”,而间接访问运算符“*”用来访问指针所指向的变量。 *运算和运算互为逆运算。 【例6.1】指针的各种表示形式及其含义。 #includeiostream.h void main() { int a=10,*p; p=a; *p=15; couta=aendl; coutp=pendl; couta=aendl; cout*p=*pendl; coutp=pendl; } 3.指针的初始化 如果用户声明了一个指针变量,在使用该指针变量之前必 须对它赋初值。否则,在程序中使用该指针变量就有可能导致 系统崩溃。与其他变量一样,我们可以在声明指针变量的同 时,通过初始化来给指针变量
您可能关注的文档
- C#面向对象程序设计 郑宇军 CSCH3.ppt
- C#面向对象程序设计 郑宇军 CSCH4.ppt
- C#面向对象程序设计 郑宇军 CSCH5.ppt
- C#面向对象程序设计 郑宇军 CSCH6.ppt
- C#面向对象程序设计 郑宇军 CSCH8.ppt
- C#面向对象程序设计 郑宇军 CSCH9.ppt
- C#面向对象程序设计 郑宇军 CSCH10.ppt
- C#面向对象程序设计 郑宇军 CSCH11.ppt
- C#面向对象程序设计 郑宇军 CSCH12.ppt
- C#面向对象程序设计 郑宇军 CSCH13.ppt
- C++程序设计 第2版 普通高等教育“十一五”国家级规划教材 作者 邓振杰 第9章 运算符重载.ppt
- C++程序设计 第2版 普通高等教育“十一五”国家级规划教材 作者 邓振杰 第10章 虚函数和多态性.ppt
- C++程序设计 第2版 普通高等教育“十一五”国家级规划教材 作者 邓振杰 第11章 C++输入输出流.ppt
- C++程序设计 第2版 普通高等教育“十一五”国家级规划教材 作者 邓振杰 第12章 文件处理.ppt
- C++程序设计 第2版 普通高等教育“十一五”国家级规划教材 作者 邓振杰 第13章 模板和异常处理.ppt
- C++程序设计 工业和信息化普通高等教育“十二五”规划教材立项项目 作者 姚琳 C++程序设计第6章.ppt
- C++程序设计 工业和信息化普通高等教育“十二五”规划教材立项项目 作者 姚琳 C++程序设计第7章.ppt
- C++程序设计 工业和信息化普通高等教育“十二五”规划教材立项项目 作者 姚琳 C++程序设计第9章.ppt
- C++程序设计 工业和信息化普通高等教育“十二五”规划教材立项项目 作者 姚琳 C++程序设计第10章.ppt
- C++程序设计 工业和信息化普通高等教育“十二五”规划教材立项项目 作者 姚琳 C++大学基础教程第5章.ppt
文档评论(0)