1. 程式人生 > >為什麼低階非const指標不能越級向高階const指標賦值

為什麼低階非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地址,突破安全性!
//結論:越級不可以這樣做!