有关const指针的一个有趣的问题 const指针不const?!
刚看书发现一个问题 于是写了下面代码
int main()
{
int a=1;
const int* p=&a;
cout<<(*p)<<endl;
a=2;
cout<<(*p)<<endl;
return 0;
}
输出结果是
1
2
依我以前的理解 const int* p 声明一个指针p 指向一个不能修改的常量 ,但是以上代码显示, const int* p 指向的内存区域 也是可以改变的!
当然, 如果在上述程序中对*p赋值 编译器马上就报错了
欢迎大家讨论,这种机制应算一个bug?
int main()
{
int a=1;
const int* p=&a;
cout<<(*p)<<endl;
a=2;
cout<<(*p)<<endl;
return 0;
}
输出结果是
1
2
依我以前的理解 const int* p 声明一个指针p 指向一个不能修改的常量 ,但是以上代码显示, const int* p 指向的内存区域 也是可以改变的!
当然, 如果在上述程序中对*p赋值 编译器马上就报错了
欢迎大家讨论,这种机制应算一个bug?
...全文
相关推荐
详细分析c++ const 指针与指向const的指针
主要介绍了c++ const 指针与指向const的指针的相关资料,文中示例代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下
深入const int *p与int * const p的区别详解(常量指针与指向常量的指针)
对于指针和常量,有以下三种形式都是正确的: 代码如下:const char * myPtr = &char_A;//指向常量的指针char * const myPtr = &char_A;//常量的指针const char * const myPtr = &char_A;//指向常量的常量指针下面依次对这三种类型进行介绍。因为*操作符是左操作符,左操作符的优先级是从右到左,对于1.常量指针(Constant Pointers) 代码如下:int * const p先看const再看* ,是p是一个常量类型的指针,不能修改这个指针的指向,但是这个指针所指向的地址上存储的值可以修改。实例1: 代码
C语言中Const指针变量(常指针)
Const指针变量只保护其Value值不被改变,并不能保护指针所指向的地址中的值不被改变,下面一起来学习一下
函数指针和指针函数,const的用法,指针常量,常量指针的用法
函数指针和指针函数的区别,以及const的用法,指针常量,常量指针的用法
C++中const与指针、引用的分析
C++中函数的参数相比C语言中的函数参数要复杂的多,其中主要的原因是C++中引入了引用以及const限定符。这两个对象的引入,使得C++中的函数参数变得异常的复杂多变,每一种类型都具有比较适合的使用范围。 本文详细的分析const与指针、引用在一起存在情况下的情况分析。


