C++指针常量、常量指针的区别详细说明.doc

C++指针常量、常量指针的区别详细说明.doc

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C指针常量、常量指针的区别详细说明

指针常量和常量指针定义: 常量指针是指--指向常量的指针,顾名思义,就是指针指向的是常量,即,它不能指向变量,它指向的内容不能被改变,不能通过指针来修改它指向的内容,但是指针自身不是常量,它自身的值可以改变,从而指向另一个常量。 指针常量是指--指针本身是常量。它指向的地址是不可改变的,但地址里的内容可以通过指针改变。它指向的地址将伴其一生,直到生命周期结束。有一点需要注意的是,指针常量在定义时必须同时赋初值。 注:也有人将这两个名称的定义与含义反过来认为:“指针常量:顾名思义它的中心词是“常量” 这是重点,指针就是一个修饰的作用。所以这里的指针还是一个变量,它的内容存放的是常量的地址。常量指针:关键字是指针,它是不能被改变的,因为指针总是 指向地址的,所以它的意思是它指向的地址是不能被改变的”。但我个人认为后者不合理,所以使用前者。 2. 使用方法: 使用时写法上的区别: 常量指针:const 在*之前 指针常量:const在*之后。 当然我们也可以定义常量指针常量,那就需要加上两个const,一前一后!以上只是从定义上给出两者的本质上的不同,在具体使用上,还有很多变化,但万变不离其宗,我们可以根据它的原理分析出各种复杂用法的实质。 3. 使用举例 3.1 常量指针使用: 如 int b, c; int const *a; a = b; a = c; 都可以,唯独它指向的内存不能被修改。如:*a=20;这是违法的!错误! 3.2 指针常量使用 如 Int a; Int aTest; Int * const p = a; 表示p是一个常量指针它指向变量a的内存。指针常量不能再用p指向其他变量,如 p = aTest; 错误!可以修改指向内存的值,如:* p = 20; 指针常量声明的时候必须向我那样赋初值。 指针常量也不能释放,用p指向NULL,即 p = NULL; 会在编译时报错 /opt/test/test.c:649: error: assignment of read-only variable `p 还有一个记住他们不同形式的技巧!看const关键字,他后面的不可修改,如int * const a = b; 后面是a,则说明a不能修改! int const * a = b;后面是*a则说明*a不可被修改! 在好多书上或MSDN是经常用 const int a=5; int b=6; const int *p=b; 其实 const int* 和int const* 一样,就是常量指针 也就是它所指向的数据(在这是int)是常量,它自己的数据类型是const int* 还有const int *p=b;是可以的 虽然b不是常量。 但是 const int a=6; int *p=a; 会报错,因为它消除了a的const属性 4. 使用技巧 使用指针常量可以增加代码的可靠性和执行效率。 如 Int a; Int * const p = a; 增加可靠性:不用担心p被修改或释放导致非预期结果; 增加执行效率:不用在子函数中对p做为空检查可以提高效率。常量指针和指针常量 2010-08-20 00:54指针常量:不能再指向其他的东东,但可以改变所指向的东东的值,当指针是常量的时候,他就要初始化,以后就不可以改变他去指向别的内存,但是可以改变他所指的内容。 常量指针:可以指向其他东东,但不可以改变所只向的东东的值,指针指向常量的时候,就是说指针所指的内存内容不可以改变,但是可以改变指针去指向别的地址;??? 在C/C++的学习中,有人经常搞不清楚“常量指针”和“指针常量”这两个概念。其实简单一点讲,“常量指针”所指向的地址上的数据是常量,而“指针常量”所指向的地址是常量,地址上面的数据是可以变化的。   首先,告诉大家一个小规则,就是像这样连着的两个词,前面的一个通常是修饰部分,中心词是后面一个词,怎么说呢,就像这里的常量指针和指针常量。   常量指针,表述为“是常量的指针”,它首先应该是一个指针。常量指针,就是指向常量的指针,关键字 const 出现在 * 左边,表示指针所指向的地址的内容是不可修改的,但指针自身可变。   指针常量,表述为“是指针的常量”,它首先应该是一个常量。指针常量,指针自身是一个常量,关键字 const 出现在 * 右边,表示指针自身不可变,但其指向的地址的内容是可以被修改的。   再分开细细说明,常量指针,它是一个指针,什么样的指针呢?它是一个指向常量的指针,就是说我们定义了一个常量,比如 const int a=7; 那么我们就可以定义一个常量指针来指向它 const int *p=a; 也可以分成两步,即 const int *p; p=a; 那么它有什么作用呢

文档评论(0)

dyn593 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档