秒懂指针常量和常量指针

必须说明的一点:const修饰符只影响其右边的代码。

指针常量

int num = 1;
int * const ptr = #

const右面只有ptr一个成员,所以只对ptr起作用,只有ptr一个人是只读的不可改变,和其他成员没关系。

ptr++;    //Error
*ptr = 2; //OK
num = 3;  //Certainly OK

这就印证了开头说的“const修饰符只影响其右边的代码”。
指针常量的意思是指针变量ptr只能存储num的地址,只能指向变量num,二者之间关系永久,矢志不渝。

常量指针

int num = 1;
const int * ptr = #

const后面是* ptr,那么只有*ptr是只读的,而其他成员numptr不受影响。

*ptr = 2;//Error
ptr++;   //OK
num = 3; //Certainly OK

这也印证了“const修饰符只影响其右边的代码”。

常量指针的意思是不能通过ptr修改num的值,仅此而已。ptr可以指向其他变量。

此外,const int * ptr = &numint const * ptr = &num是完全等效的,毕竟constint没什么瓜葛,const无论怎么用都是在对后面的* ptr起作用。

指向常量的指针常量

根据“const修饰符只影响其右边的代码”这一原则,我们既想让ptr永远指向num,又不想通过ptr改变num的值,我们可以这样写:

const int * const ptr = #

其中第一个const*ptr起作用,第二个constptr起作用,这样就形成了指向常量的指针常量。

你可能感兴趣的:(指针)