指向常量的指针和常量指针

1.指向常量的指针 

int A = 123;
const int*a = &A;

是一个简单的指向常量的指针,它不能通过指针a来改变A的值,但可以通过其他方式改变,比如直接修改就行(例如A = 12345)。

const int A = 123;
const int *a = &A;

在书写的时候我也才发现,不是指向常量的指针必须和const搭配,于是有了上面这个代码,同样可以运行,不同的是,这次的A被const修饰,不仅不能通过指针修改A的值,也不能通过其他方式修改。(例如A = 12345  就不可以)

综上所述,指向常量的指针可以指向一个常量也可以是一个变量。所谓的指向常量的指针只是要求不能通过该指针修改对象的值。既然叫指向常量的指针,那么说明指针自己并非常量,所以a定义完之后还可以修改指向的对象,比如指向c,d,e等等。(例如a = &c)

2.常量指针

int A = 123;
int* const a = &A; 

这是一个简单的常量指针,也就是指针作为一个常量,也就是指针指向的地址无法改变,即a无法改变。但是A的值可以改变。(例如a = &b 不可以 ,A = 12345可以)

const int A = 123;
int* const a = &A;
这个代码是错的,我也能太理解,显示:&A是一个const int*类型,不能赋值给int* const类型。
目前才疏学浅,无法解答。我会在后面的路途找出答案

如果单看代码容易混淆可以这样记:从右向左阅读这个声明。

比如:int * const  a可以看成 a const int*,也就是先常量再指针,就是常量指针

这些大概也许算是我的笔记?本人才疏学浅,只学了点皮毛。如果有错的地方,请一定告诉我,我会及时修正。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值