一个关于C++指针的问题(const int型的指针)

2024-11-23 01:13:57
推荐回答(3个)
回答1:

这就涉及到内存分配的问题,由于a被定义为常量,所以其被保存在 “常量存储区” ,而在给类型为int *变量p赋值是将原为const int *强制性转换成int* ,int *p是局部变量,我们知道 局部变量 是被保存在栈区里的,所以就会导致同一个内存编号,却有两个不同的值。

说明:
&a的类型为 const int *
p的类型为 int *
所以在赋值时需要强制转换成(int *),而正因为你使用了强制性转换类型,所以导致了内存分配的方式改变了。

一般都是使用这种非正常手段来改变常量的值。但意义不大,因为在实际开发产品过程中很少有人会这样用。

回答2:

第三行不是重新 *p=20; 不是被重新赋值了么,如果把这句去掉,两个值就一样了

回答3:

http://www.cnblogs.com/gongxijun/p/4375458.html