常量指针(不是指针常量)不能赋值给普通指针

#include

using namespace std;

int main(){

int pr;

const int
prr;

pr=prr;

return 0;

}



编译时出错:

C:\Users\Administrator\c++\Cpp9.cpp(6) : error C2440: '=' : cannot convert from 'const int ' to 'int '

Conversion loses qualifiers

执行 cl.exe 时出错.

这是怎么回事 呀 ,是不是常量指针不能赋值给普通指针呀?

回答:

const 右侧是int,也就是说声明int是个常量,常量不可修改。

那么prr是个指向整数常量的指针。

假设

int a;

prr=&a;

如果允许pr=prr,那么通过pr指针就可以修改a,比如 *pr=10;

这违背prr的定义,为防止绕道修改a值而出现错误乱,编译器就会提示错误。

如果你只是想限定prr本身不可修改,可以这么写

1234 `int` `a;``int` `*pr;``int` `*``const` `prr=&a;``pr=prr;`

将const写在prr前面,使得限定prr本身,也就是说prr是个整数的指针常量,prr的值除了定义时初始化,其他地方不能修改(prr的指向不可改变),但prr指向的地址中的值还是可以修改的。

这样pr=prr,就不会出现冲突,因为他们都指向一个同类型地址,且pr是个普通指针变量,所以可以赋值。
原文链接: https://www.cnblogs.com/wjr0526/p/6637447.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/251640

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月14日 上午5:25
下一篇 2023年2月14日 上午5:26

相关推荐