如何区分指针常量和常量指针
一、概念
常量指针:常量指针本质是指针,常量修饰它,表示这个指针是一个指向常量的指针(变量)。指针指向的对象是常量,那么这个对象不能被更改
在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; //错误
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!