码迷,mamicode.com
首页 > 其他好文 > 详细

指针和const限定符

时间:2014-05-15 07:44:06      阅读:197      评论:0      收藏:0      [点我收藏+]

标签:style   c   color   int   a   使用   

指向const对象的指针,例如:const int *pival;pival是以个指向int类型const对象的指针,const限定pival指针所指向的对象类型,而并非pival本身,也就是说,pival并不是const,在定义时不需要对它进行初始化,如果需要,允许给pival重新赋值,使其指向另外一个const对象,但不能通过pival修改所指对象的值。

*pival = 10;//error:pival is a plain pointer

把一个const对象的地址赋值给一个普通的、非const对象的指针也会导致编译时的错误:

const int pival = 1;

int *pival2 = &pival;//error:pival is a plain pointer

const int *pival3 = &pival;//ok

 

不能使用指向const对象的指针修改基础对象,然而如果该指针指向的是一个非const对象,可以用其他方法修改所指向的对象。可以把指向const的指针理解为"自以为指向const的指针"。例如:

double pi = 3.14;

const double *cptr = π

cout<<*cptr<<endl;//3.14;

pi = 3.15;

cout<<*cptr<<endl;//3.15;

在实际的程序中,指向const的指针常用作函数的形参。确保传递给函数的实际对象在函数中不因为形参而被修改。

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

const 指针

int errNumB = 0;

int *const currErr = &errNumb;//currErr是指向int类型对象的const指针,与其他const常量一样,const指针的值不能修改,意味着不能使currErr指向其他对象。必须在定义时初始化。

指针本事是const的事实并没有说明是否能勇士该指针修改它所指向对象的值。指针所指向对象的值能否修改完全取决于该对象的类型。

我们可以 *currErr = 0;

 

 

指针和const限定符,布布扣,bubuko.com

指针和const限定符

标签:style   c   color   int   a   使用   

原文地址:http://www.cnblogs.com/aj007/p/3729010.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!