指针指向对象的地址,而引用仅仅是对象的别名。
常量指针: const int * p:代表指针p指向的值,不能发生变化,但是,其地址可以发生变化; int * const p:指针指向的地址不能发生变化,但是,地址对应的值可以发生变化
常量指针的定义:
int x = 0;
// 指针指向的地址可以发生变化,指向的值不能改变
const int * p = &x;
std::cout<<p<<std::endl;
int y = 3;
// 指针指向的地址发生变化
p = &y;
std::cout<<*p<<std::endl;
std::cout<<p<<std::endl;
std::cout<<x<<std::endl;
上述代码打印结果为:
```bash
0x7fff2288f754
3
0x7fff2288f750
0
相应的,如果如下所示定义:
int x = 0;
// 指针指向的地址不能发生变化,但是,地址对应的值可以发生变化
// 指针不能修改
int * const p = &x;
std::cout<<p<<std::endl;
int y = 3;
//指针指向的值发生变化
*p = y;
std::cout<<*p<<std::endl;
std::cout<<p<<std::endl;
std::cout<<x<<std::endl;
`` 上述代码打印结果为:
0x7ffc8e8b6190
3
0x7ffc8e8b6190
3
|