区别:
1、本质
指针常量:本质
上一个常量
,指针用来说明常量的类型,表示该常量是一个指针类型的常量。
常量指针:本质
上是一个指针
,常量表示指针指向的内容,说明该指针指向一个“常量”。
2、地址
指针常量:在指针常量中,指针自身
的值是一个常量,不可改变
,始终指向同一个地址。在定义的同时必须初始化
。
常量指针:指针可以指向其他地址
。
3、内容
指针常量:指向的内容
可以修改
常量指针:在常量指针中,指针指向的内容是不可改变
的,指针看起来好像指向了一个常量。
int main()
{
int a=10;
int b=20;
const int *p1=&a;//常量指针:指针**指向一个常量**,且**不可通过*p1(对指针解引用操作)**来改变该常量值。
int * const p2=&b;//指针常量:指针本身是一个常量,且自身指向的**内存单元的地址**不可改变。但可以通过*p2(解引用操作)**来改变其所指向的内存单元的内容值。**
p1=&b;//正确,p1指向的是一个常量。可以使其指向不同的内存单元(该内存单元的内容值为常量)。
*p1=5;//错误,不能通过*p1(解引用操作)来改变p1所指向的内存单元的内容值。
p2=&a;//错误,p2为一个常量,其自身的内容值不能改变(在本例中,即其指向的内存单元的地址不能改变)。
*p2=30;//正确,p2为一个指针常量,其指向的内存单元的地址不可以改变,但是其指向的内存单元本身的内容可以改变。
}
参考资源:https://blog.csdn.net/IT_happy_/article/details/84847615
https://blog.csdn.net/ypshowm/article/details/89030156