常量指针与指针常量的区别

一、常量指针

        定义:指向常量的指针。该指针指向一个常量,常量的值不可变,不可以通过该指针修改其值,但是该指针可以指向其他常量。(指针地址可以变,值不能变)

int a = 0,b = 0;
const int *p = &a;
*p = 1; //错误,不可修改常量值
*p = &b; //正确,可以指向另一个常量

二、指针常量

        定义:指针本身是常量。该指针只能指向某个常量,不可再指向其他常量。(指针地址不可变,值可变。注:指针常量在定义时要赋初值。

int a = 0,b = 0;
int* const p = &a;
*p = 1; //正确,可以修改值
*p = &b; //错误,不可改变地址

三、指向常量的指针常量

定义:指向常量的常指针。(指针地址不可变,值不可变)

int a = 0,b = 0;
const int * const p = &a;
*p = 1; //错误,不可以修改值
*p = &b; //错误,不可改变地址

四、区分记忆:

        如果关键字 const 出现在 * 号左边,表示被指物是常量,侧重点是常量,值不可变;如果出现在 * 号右边,表示指针自身是常量,侧重点是指针,地址不可变;如果出现在 * 号两边,表示被指物和指针都是常量,地址和值都不可变。(简化记忆:const 与 * 号,谁在左边就以谁为侧重点。)

//注意:两种写法的意义相同,都是常量指针。
const int* a;
int const* a;

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值