指针常量与常量指针

指针常量与常量指针

指针常量

重点在常量,const修饰常量(const修饰p,即const p),在const前写指针*,所以指针常量就为:

int * const p

由于const修饰p → 因此p不能改变 → p是一个地址 → 地址不能改变 → 地址的指向不能改变。

由于地址的指向不能改变,因此在声明的时候一定要给它赋初始值。一旦赋值,以后这个常量再也不能指向别的地址

int a;
int *const p = &a;			//在声明的时候就附初始值,之后p的指向不能改变

常量指针

重点在指针,const修饰指针(const 修饰*p,即const *p),所以常量指针为

int const *p     或者
const int *p

const 修饰 *p → 因此 *p不能改变 → *p是指向的内容 → 指针指向的内容不能改变

虽然指针指向的内容不能通过这个指针来修改,可是仍然可以通过原来的声明修改。

int a = 2014;
const int *c = &a; // 这是合法的,非法的是对c的使用
*c = 2016; // 非法,但可以这样修改c指向的对象的值:a = 2016;

总结:
const 在 * 前面 ,常量指针
*在const前面,指针常量

const修饰什么,什么不可变
const修饰p,p为地址,地址指向不能变
const修饰*p,*p为内容,指针指向的内容不可变

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值