#1 指针指向一个const常量,
指的是指向的这个常量可以通过指针引用,但是不能通过指针修改,比如传一个数组到函数中,但是又不想被意外地修改其中的数据,那么可以用一个指向这个数组的常量指针来实现。
实例:int a=20; const int p=a; 这里说明不能使用p来修改a里面的值,但是可以直接改变a的值。
注意:
int a=20; int *p=a;const int *p1=p; 这段代码是被允许的,可以将非const指针赋值给const指针,*p仍然可以修改a的值,但是p1只能引用而不能修改a的值。另外,反过来,将const指针赋值给非const指针是不被允许的,因为这样a的值就变成了既可以修改又不可以修改。
这里const表达的指针p是一种不可以改变内容的引用方式,但是可以修改p的地址,新的地址上的内容也是不可以修改的。
#2 指针指向一个固定的地址
这里指的是指针的内容不可修改,但是指针指向的内容是可以修改的。
实例:int a=20; int * const p=&a; 这种情况下p是可以改变a的值的,比如p=30;但是p中存放的地址是不可以改的,比如有int b=30; p=&b是不被允许的。
#总结:const 后面修饰的是不可以改的,const int p 说明p不可以改变int的内容,int * const p 说明p中的内容是不可以修改的。