您的位置:首页 > 其它

关于多重间接运算指针的const问题

2014-03-12 08:18 330 查看
首先你要清楚const的作用,以及用const定义的指针与没用const定义的指针的区别。不清楚的话请先百度。下面来说明多重间接运算的问题。在这里就直接引用书中的解释吧,它解释的很清楚。考虑下面这段代码:
int * p1;
cosnt int * p2;
const int ** pp2;
p1 = p2;//非法,把const指针赋给非const指针
p2 = p1;//合法,把非const指针赋给const指针
pp2 = p1;//非法,把非const指针赋给const指针-----<重点>
大家都知道,把const指针赋给非const指针是错误的,因为您可能会使用新指针来改变const数据。但是把非const指针赋给const指针是允许的,这样的赋值有一个前提:只进行一层间接运算。P2 = p1;//合法,把非const指针赋给const指针在进行两层间接运算时,这样的赋值不再安全。如果允许这样赋值,可能会产生如下问题:
const int ** p2;
int * p1;
const int n = 13;
pp2 = &p1;//不允许,但我们假设允许
*pp2 = &n;//合法,二者都是const,但这同时会使p1指向n
*p1 = 10;//合法,但这将改变const a的值
本文出自 “zero4eva” 博客,请务必保留此出处http://zero4eva.blog.51cto.com/7558298/1373585
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: