如何区分指针常量和常量指针

一、概念

常量指针:常量指针本质是指针,常量修饰它,表示这个指针是一个指向常量的指针(变量)。指针指向的对象是常量,那么这个对象不能被更改
在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; //错误

posted @   凯哥纵横天下  阅读(76)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示