指针常量和常量指针的区别

1、常量指针(const int * p1,const修饰的是指针)

指针指向可更改,指针指向的值不可更改。const 修饰 int *,即指向的那个内存区域,故使用该指针不可改变那个内存区域的值,但是那个内存区域本身可以改变。

int a = 10, b = 20;
const int * p1 = &a;
p1 = &b;     // 指针指向可以更改,但是指针指向的值不可更改
//*p1 = 100  //错误

2、指针常量(int * const p,const修饰的是常量)

指针指向不可更改,指针指向的值可以更改。const 修饰指针 p,所以p不可以指向别的内存区域。

int a = 10, b = 20;
int * const p2 = &a;
//p2 = &b;     //错误
*p2 = 100;     //指针指向不可更改,指针指向的值可以更改

3、指向常量的常量指针(const int * const p3,const既修饰指针又修饰常量)

指针指向不可更改,指针指向的值也不可更改

const int * const p3 = &a;
//p3 = &b;     //错误,指针指向不可更改
//*p3 = 100;  // 错误,指针指向的值也不可更改

总结:可将 const 读作变量,* 读作指针,谁在前先读谁;同时,对于常量指针和指针常量,谁在前谁不可改变。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值