首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

很弱的关于const的有关问题

2013-01-20 
很弱的关于const的问题问题如下:const int *p1nullint *p2nullp1p2//编译通过OK//-----------分割--

很弱的关于const的问题
问题如下:
const int *p1=null;
int *p2=null;
p1=p2;  //编译通过OK
//-----------分割--------------
const int **p3=null;
int **p4=null;
p3=p4;  //编译出错-error C2440: “=”: 无法从“int **”转换为“const int **”

求解释,为何第二点编译会出错?
编译器这样处理的原因是什么?(请帮忙结合第一点分析一下)
[解决办法]

引用:
引用:和const有什么关系。。
因为p4和p3指向的数据类型不同,p4指向的类型int*,p4指向的类型const int*。
当然和 const 有关啊,别误导人家。

我的,打字太快没注意。  C++有类型检查.. 2者类型不一样。
[解决办法]
引用:
引用:引用:和const有什么关系。。
因为p4和p3指向的数据类型不同,p4指向的类型int*,p4指向的类型const int*。
当然和 const 有关啊,别误导人家。
我的,打字太快没注意。  C++有类型检查.. 2者类型不一样。

其实也不是说类型不同就不能,要看能不能转化:如果函数的参数是const,它可以接受非 const 变量的实参的,无非在此函数内部不会有修改它的动作而已,但如果形参是非const,你把一个const的实参传给它,编译器会报错的,因为形参为非const会让编译器认为函数内部会有修改它的操作(即便其实没有修改操作),所以就不能接受const的实参。

热点排行