常指针与指针常量的区别

  • Post author:
  • Post category:其他





常指针与指针常量的区别(转帖)





三个名词虽然非常绕嘴,不过说的非常准确。用中国话的语义分析就可以很方便地把三个概念区分开。



一) 常量指针。


常量是形容词,指针是名词,以指针为中心的一个偏正结构短语。这样看,常量指针本质是指针,常量修饰它,表示这个指针乃是一个指向常量的指针(变量)。


指针指向的对象是常量,那么这个对象不能被更改。


在C/C++中,常量指针是这样声明的:


1)const int *p;


2)int const *p;


常量指针的使用要注意,指针指向的对象不能通过这个指针来修改,可是仍然可以通过原来的声明修改,也就是说常量指针可以被赋值为变量的地址,之所以叫做常量指针,是限制了通过这个指针修改变量的值。例如:


int a = 5;


const int b = 8;


const int *c = &a; // 这是合法的,非法的是对c的使用


*c = 6; // 非法,但可以这样修改c指向的对象的值:a = 6;


const int *d = &b; // b是常量,d可以指向b,d被赋值为b的地址是合法的


细心的朋友在使用字符串处理函数的时候,应该会注意到这些函数的声明。它们的参数一般声明为常量指针。例如,字符串比较函数的声明是这样的:



版权声明:本文为admirxue原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。