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

prob 专栏收录该内容
5 篇文章 0 订阅

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地址,突破安全性!
//结论:越级不可以这样做!
  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值