const指针和引用.docx_第1页
const指针和引用.docx_第2页
const指针和引用.docx_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

指针一1指向变量的常指针Int *const pa=&a;*与const组合(*const)表示指针为常指针,2指向常量的指针Int const *pa=&a;或const int *pa=&a;*与指针变量名(p1)组合(*pa),表示指针指向常量二通过指针修改常量,是通过直接访问物理内存来修改值的,所以即使物理内存上是常量,有的编译器也认可这种做法,unix编译便可以。如:Const int a=100;Int*pa=&a;*pa=300;这个在unix下是可以通过的。指向常量的指针const int *p1=&a;表示指针指向空间的东西是常量,不能通过指针修改。1. Int a=10;const int *pa=&a;*pa=34;/错a=66; /对pa是指向常量的指针,所以语句*pa=34这时候就是错误的,即不能通过指针来修改;不过因为a不是常量,所以代码a=66;这里就是正确的。2. 指向常量的指针本身指向的地址是可以修改的:Int a=10;Int b=20;const int *pa=&a;pa=&b;/对*pa=55;/错,b的值这时候不能通过指针pa来修改pa这时就指向b的地址,是正确的。因为pa是指向常量的指针,所以这时候b就不能通过pa来修改了,如:*pa=55就是不正确的。常指针Int *const pa=&a;表示指针(pa)是一个常量,其指向的地址是不可以更改的,如: Int a=10;Int b=20;Int *const pa=&a;/假如a的地址是0X10002000,那么pa的值就是0X10002000,不能更改pa=&b;这里pa=&b就是错误的。可以通过指针来修改变量,*pa=55就是正确的,这句代码将a的值变为55。Int m=2;const int *const pm=&m;m=66;这里将pm定义为指向常量的常指针,只能代表pm本身不能修改,且不能通过pm来修改m的值,但是可以直接修改m的值,如:m=66,这是正确的。所以想让m变成真正的金刚的话,就要把m也定义成常量,即:const int m=2三:指向对象的指针1 cpoint a1;2 const Cpoint a2;3 const Cpoint*p1=&a1;4 const Cpoint*p2=&a2;5 cpoint *const pp1=&a1;6 cpoint *const pp2=&a2;/错3,4句代码是定义指向常对象的指针,3,4的声明是正确的,其作用同指向常量的指针。5,6句代码定义了指向对象的常指针。第6句代码中,因为a2是常对象,而通过指针时可以修改常量的值(二),所以这里会出错。解决办法是声明为指向常对象的常指针。Const cpoint *const pp2=&a2;引用1 定义const引用,不能通过引用来修改变量的值。如:Int a=2;const int&n=a;n=5;/错这里n=5这句代码就是错误的。2 如果被引用的变量是常量,则引用也必须是常引用。如: Const int a=5; Int&n=a;/不是const引用,这里就会出错 n=888;这样是错误的。3 const int&fun(int&a,int&b)这句代码,函数返回的引用是常引用,所以不能当左值。对比下面两段代码:int&fun(int&i,int&j)return(i);Int main() Int a=1,b=2;fun(a,b)=5;这里fun函数返回对a的引用,所以最后a的值就是5.但是改成如下的代码的话const int&fun(int&i,int&j)return(i);Int main() Int a=1,b=2;fun(a,b)=5;/错那么fun(a,b)=5;就是错误的。4 int fu

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论