指针常量和常量指针的一些整理
近来学习指针,碰到一个关于指针常量和常量指针的问题,之前被弄得是稀里糊涂的,今天特意查资料整理了一下,现拿出来和大家分享,有什么弄错的地方请
大家不吝赐教,共同进步。
首先常量指针,咱们可以这样理解,常量指针即是一个指向常量的指针,既然指
向的是一个常量,那它所指向的值当然就不能变了。但是它本身的值,即它的地
址是可以变的,咱们可以把它指向别的地址。
而指针常量,则可以理解为一个常量,什么时候常量??指针常量,即指针是常
量,则它的地址是不可变的,但是它所指向的地址里的值是可以变的。
一个int型的常量指针是这样定义的:int const* 指针名。int const(常量)*(
指针)指针名
一个int型的指针常量是这样定义的:int* const 指针名。int*(指针) const(常
量)指针名
观察上面两个的定义我们是不是可以根据*和const的位置来一眼判断是一个指针
常量还是一个常量指针呢???*前const后是指针常量,const前*后是常量指针!!
!呵呵,当然最重要的还是要理解它们所代表的含义,哪个能改,哪个不能!
现在可以通过下面的一段代码再来看看自们理解的怎么样了。试试看下面的代码
哪里有问题,为什么!
#include<stdio.h>
int main(){
int i=0;
int j=1;
int x;
const int * pi=&i;
*pi=22;
pi=&j;
int * const pj=&j;
*pj=22;
pj=&i;
const int * px=&x;
const int h=2;
const int* ph=&h;
int* const ph2=&h;
}