一、概念
常量指针:常量指针本质是指针,常量修饰它,表示这个指针是一个指向常量的指针(变量)。指针指向的对象是常量,那么这个对象不能被更改
在C/C++中,常量指针是像这样声明的:
1)const int *p;
2)int const *p;
指针常量:指针常量的本质是一个常量,并且使用指针来修饰它,那么说明这个常量的值应该是一个指针
在C/C++中,指针常量这样声明:
1)int a;
2)int *const p = &a; //const放在指针声明操作符的右侧
二、实例分析
区分方法:从变量名开始看起,从后往前看,以第一个看到的字符为判断依据。
int a = 10;
int b = 10;
//常量指针 const修饰的是指针,指针指向可以改,指针指向的值不可以更改
//从变量名p1 开始看起,从后往前看,以第一个看到的字符是 *,*就是指针,我们就知道是在描述“指针”,很显然,“常量的指针”才是描述指针的。所以这两句代码是在说常量指针。
const int* p1 = &a;
p1 = &b; //正确
//*p1 = 100; 报错
//指针常量 const修饰的是常量,指针指向不可以改,指针指向的值可以更改
//从变量名p2开始看起,从后往前看,以第一个看到的字符是 const,const就是常量,我们就知道是在描述“常量”,很显然,“指针的常量”才是描述常量的。
int* const p2 = &a;
//p2 = &b; //错误
*p2 = 100; //正确
//常量指针修饰的指针常量 const既修饰指针又修饰常量
//那有人问了,那么如果我既不想让指针被再次赋值,也不想让指针指向的对象被再次赋值,该怎么做呢?可以参考下方代码所示:
const int* const p3 = &a;
//p3 = &b; //错误
//*p3 = 100; //错误
标签:const,常量,指向,int,区分,修饰,指针
From: https://www.cnblogs.com/kylintao/p/16747533.html