C中指针解析.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C中指针解析

C中指针解析   摘 要: 指针是C++语言中最难掌握的概念之一,错误地使用指针所带来的后果往往是很严重的,有时甚至会导致系统崩溃。因此,正确使用指针是C++语言学习的重点和难点。   关键字: C++指针 地址 解析      计算机内存是由二进制位组成的,为了便于访问和管理,每8位组成一个字节,一个字节称为一个存储单元。通常,系统对每个存储单元按期顺序进行编号,编号能惟一确定任何一个字节的位置,就像根据房间号能惟一确定任何一个房间一样,于是编号被形象地称为地址。程序所处理的每一个数据必须存放于计算机内存中才能运行,这些数据按其所属的数据类型,需要占据一定数量的连续的存储单元,而这些存储单元都位于内存的某个特定位置,都有一个惟一的起始地址。   因为地址指示了字节在存储器中的位置,所以地址也被形象地称为指针。指针是一个存储单元的地址值,用来存放地址(即指针)的变量称为指针变量,常常将指针变量简称为指针。C++中的指针按照它所指向的对象可以划分为变量指针、数组指针、函数指针、对象指针、类的数据成员指针和类的成员函数指针。   一、变量的指针   1.设type代表任意一种基本说明符,则:   type x;//声明了一个type型变量x。   type*p;//声明了一个type型指针变量p,“*”表示声明的p是一个指针变量,p所指向的变量的类型是type型。   p=x;//指针变量p指向了变量x,是地址符号,x表示变量x的地址。只有变量x的数据类型和指针变量p所指向的变量的数据类型相同才可作此操作。   2.可声明多级指针变量,如:   type**p;//声明了一个指向type类型的二级指针变量p。   二、数组与指针   1.数组的指针   type a[3];//声明了一个具有三个type类型数据的数组。   在这里a有两个涵义:   ①作为数组名,表示数组这个整体。   ②表示这个数组在内存所占的一段连续的存储单元的起始地址,也就是这个数组中第一个元素的地址,即a[0]。   type*p;//声明了一个type型指针变量p。   p=a;//将数组的起始地址赋给指针变量,使指针变量p指向数组,相当于p=a[0]。   2.数组指针   type(*p)[3];//声明了一个指针p,这个指针指向具有3个的type类型元素的数组。   3.指针数组   type*p[3];//声明了一个具有三个指针元素的数组,每个元素都是可以指向type类型数据的指针变量   三、函数与指针   1.返回指针值的函数   函数的返回值可以是整型、浮点型、字符型等基本类型,也可以是指针类型。如:int*f(),则函数的返回值是一个指向整型数据的指针,称这个函数为返回指针值的函数。   type*(形参表)   {   ……   }//定义了一个返回指针值的函数   void main()   {   type*p;   p=f(实参表);//函数调用,p接收的是函数f返回的指向type类型数据的指针   ……   }   2.函数指针   函数名就是函数的入口地址,函数指针就是指向函数入口地址的指针变量,即存放函数入口地址的变量。   type(*p)(type x);//定义了一个名为p的函数指针   type f(type x)   {   ……   }//定义名为f的type函数。   p=f;//将函数f()的入口地址赋给函数指针变量p,即使指针变量p指向函数f(),只能将与函数指针变量具有同类型、同参数的函数名赋给函数指针变量。   四、对象指针   设有一个类A,a和f()分别是类A公有数据成员和公有成员函数,则:   A t;//声明了一个类A的对象t,则t是对象t的地址。   A*p;//声明了一个指向类A的指针变量p。   p=t;//将指针变量p指向了类A的对象t。   用指针p调用对象t的数据成员和成员函数的格式为:p→a;和p→f()。   五、类的成员数据指针   设t是A类的一个对象,a是A的一个非静态type型成员数据,s是A的一个静态type1型数据成员,则:   1.①A∷a的相对指针常量为A∷a;   ②A∷s的物理指针常量为A∷s。   2.①可以指向A类的type型非静态成员的指针p1的声明格式为:type A∷*p1;   ②可以指向A类type型静态成员的指针p2的声明格式为:type1*p2。   3.①使p1指向A∷a的方式为:用 A∷a初始化p1或在声明了p1后向p1赋值;   ②使p2指向A∷s的方式为:用 A∷s初始化p2或在声明了p2后向p2赋值。   4.①用p1而不用a来访问t.a的格式为:t.*p1;   ②用p2而不用s来访问t.s的表达式为*p2。   六、类的成员函

文档评论(0)

bokegood + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档