指针常量与常量指针

指针常量
本质是一个常量,意为指针类型的常量

int * const p

解释:const修饰的是p,而p是一个int类型指针,因为p被const修饰了,所以p的值不能被改变,指针p的值即其指向的地址,也就是说,指针p只能指向这个对象,无法改变指向。例:

int a =6,b=7;
int * const p = &a;
p=&b; //错误,指针常量不能改变指向的对象。
*p=7; //正确,指针常量可以改变指向对象的值。

指针常量基本可以等价于引用,都是把指针和指向的对象进行绑定,但为了向前兼容c,所以保留了指针常量,使用上基本是一样的。

常量指针
本质是一个指针,意为指向常量的指针

int const* p;  

const int* p;  

解释:const修饰的是指针p指向的对象,这种定义方式限制了通过这个指针修改变量的值,指针看起来好像指向了一个常量。但这个对象并不是真的常量,可以通过其他途径改变它的值。例:

int a = 5, b=7;
const int* p = &a;
*p=6  //错误,无法通过常量指针p改变p指向对象的值。
a=6; //正确  
p=&b  //正确,常量指针可以改变指向的对象。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值