为什么低级非const指针不能越级向高级const指针赋值

c/c++:
为什么不能低级非const指针越级向高级const指针赋值的问题

const int n=11;
int *p;
int **pp;
const int ***ppp=&pp;//INVALID
const int ***ppp1=&p;//INVALID
/*if allowed,then*/
*ppp=(int**)n;
int *hole=(int*)ppp;
*hole=2333;//variable n changed
//取得它的地址,给他填充值(给赋值),再回去解它本身。
//凡是取得地址,变相地相当于给它间接赋值,而二级指针自身const属性保护!使这一切成为可能,
//前一级的非const是自由的,就是漏洞
//任意两级之间不能这样做
//结论:上一级的非const(指针)不能给下一级的const(指针)赋值,这样做是的上一级的非const成为了漏洞,下一级降级解+自身const保护(面具)==上一级非const可以取得const地址,突破安全性!
//结论:越级不可以这样做!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值