const int *p; 和 int const *p;
二者是一样的, 其中 const 修饰的是 int, 表示指针所指的对象不可以通过该指针被改变 (但是不代表这个对象不可以通过其他途径改变), 但是指针本身可以被改变.
- eg:
- #include<bits/stdc++.h>
- using namespace std;
- int a=1;
- int b=2;
- int const *x=&a;
- const int *y=&a;
- int main(){
- // 指针所指的对象可以从 a 指向 b
- x=&b;
- y=&b;
- /* 编译错误, 指针所指对象的值不可以被改变.
- *x=10;
- *y=10;
- */
- b=3;a=4;
- cout<<*x<<""<<*y<<" "<<a<<" "<<b<<endl;
- // 输出 3 3 4 3
- // 从这里看出, 虽然无法通过指针修改对象, 但是对象的值还是可以改变.
- }
- int *const p;
表示可以通过该指针修改所指的对象的值, 但是指针本身不能改变.
- eg:
- #include<bits/stdc++.h>
- using namespace std;
- int a=10;
- int b=5;
- int *const p=&a;
- int main(){
- *p=0;
- //p=&b; 错误, 指针不可以被改变
- cout<<a<<""<<b<<" "<<*p<<endl;
- // 输出 0 5 0
- }
- const int *const a;
既不能通过指针修改所指的对象的值, 又不可以改变指针本身.
来源: http://www.bubuko.com/infodetail-3399924.html