【C/C++】与const有关的指针类型赋值

本文详细探讨了C/C++中const修饰的一级和二级指针在相互赋值时的规则。从const修饰的内容出发,解释了不同类型指针赋值的允许与禁止情况,强调了const在指针类型中的作用和影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一级指针相互赋值

int a=10;

int *p1=&a;
const int *p2=&a;
int * const p3=&a;

int *q1=&a;
const int *q2=&a;
int *const q3=&a;

p1=q1; 可以。int * -> int *

p1=q2; 不可以。const int *p1 -> int *p2

            const修饰类型为int,修饰内容为*p1,也即*p1不可改变。把p1给了p2,有可能通过改变*p2而改变了*p1。

p1=q3; 可以。int *const p1 -> int *p2

           const修饰类型为int *,修饰内容为p1,也即p1不可改变。把p1给p2,p1不作为左值,是可以的。

 

p2=q1; 可以。int *p1 -> const int *p2

           const修饰类型为int,修饰内容为*p2,也即*p2不可改变。把p1给了p2,只是改变了p2。

p2=q2; 可以。con

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值