首页 > 代码库 > 常量指针与指针常量

常量指针与指针常量

#include<iostream>
using namespace std;
int main()
{
   int a=5,b=10,d=20;
   int *  const  c=&a;
   *c=a;
      cout<<c<<"-------"<<*c<<endl;
   *c=b; 
      cout<<c<<"-------"<<*c<<endl;
   return 0;
}

输出:(在Ubuntu下还不会截屏没截图啦)

自己试一下吧  ,可以看到输出了同一个地址,还有5,10;

切记最重要的一点 cosnt 修饰的是它前面的东西 也就是  int *  ,而int*  是一个指针 所以理解为 指针被修饰为常量 (所以程序输出地址不变,但是它内存中的值是可以变的)

在定义的时候要先赋值,不然就出错啦,

c=&b;  是不可以的,因为c是个常量嘛!!!

#include<iostream>
using namespace std;
int main()
{
   int a=5,b=10,d=20;
   int  const *   c=&a;
    c=&d;
      cout<<c<<"-------"<<*c<<endl;
    c=&b;
      cout<<c<<"-------"<<*c<<endl;
   return 0;
}

const  修饰它前面的东西  这个程序也就容易理解了 

输出结果为: 不同地址,不同值

因为它不是个常量的指针 所以c的地址可以随意更改;

但是 不能 *c=50;  因为不能更改c内存中的值;

虽然现在我知道 常量指针和指针常量 文字意思,但是过几天又忘记啦,反正知道怎么用才是最重要的

切记最重要的一点 cosnt 修饰的是它前面的东西   这是我在C++ templates  看到的

还有  cosnt  int   a =10;

         int  const  a =10;

是一样的   C++ templates  书中也建议 用下面这种;

还有   int const * cosnt c =&a ;被俩次修饰 ,不能做任何修改;