首页 > 其他 > 详细

关于const 和指针

时间:2014-03-02 10:55:55      阅读:519      评论:0      收藏:0      [点我收藏+]

这个很久之前就很困扰的问题,现在再理一下:

1,指向const对象的指针

》C++强制要求指向const对象的指针也必须具有const特性!!!也就是不能把一个const对象的地址赋给一个非const对象的指针!

》而该指针的const特性限定了该指针所指向的对象的类型,而并非该指针本身。

eg. const int i = 0;

     const int *p = &i;    //OK

     int *p = &i;           //error

》不能用void *指针保存const对象的地址,而必须用const void *类型的指针保存const对象的地址

》允许把非const对象的地址赋给指向const对象的指针,并不能通过该指针改变其值(但是可以通过其他方式改变)

 

2,const指针

》其本身的值不能修改!即初始化后就不能指向其他的地址!!

》与任何const量一样,在定义const指针时必须进行初始化!但是指向const对象的指针不必

eg. int i = 0;

     int *const P = &i;    //不能指向const int类型的对象!

 

3,指向const对象的const指针

》既不能修改初始化后的指针指向的地址,也不能修改指向对象的值!(必须在定义的时候初始化)

eg. const int i = 0;             //所指向的对象必须是const类型,而不能是非const

     const int *const p = &i;

 

4,指针和typedef

》typedef中使用指针就不能单纯的当做文本扩展

eg. typedef string *ps;

     const ps cstr;

可等价于

     string *const cstr;

并且和

     ps const cstr;

也是等价的,都可指向string类型的对象。

      

关于const 和指针,布布扣,bubuko.com

关于const 和指针

原文:http://www.cnblogs.com/day-dayup/p/3575198.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!