代码:
#include <iostream>
using namespace std;
int main(int argc, const char * argv[]) {
cout<<"测试1:常指针"<<endl;
int a=1;
int a2=10;
int *const p1 = &a;//在定义时就给初值
cout<<"a="<<*p1<<endl;
a=2;//允许直接改变a的值
cout<<"a="<<*p1<<endl;
*p1=3;//允许通过指针改变a的值
cout<<"a="<<*p1<<endl;
cout<<"a="<<a<<endl;
// p1=&a2; 不被允许
cout<<"测试2:指向常量的指针"<<endl;
cout<<"测试2.1"<<endl;
int b=1;
int const *p2 ;
p2=&b;
cout<<"b="<<*p2<<endl;
b=2;//允许直接改变b的值
// *p2=3; 不允许通过指针来改变b的值
cout<<"测试2.2"<<endl;
int c=1;
cout<<"b="<<*p2<<endl;
const int *p3;//交换const与int的位置,仍为指向长量的指针
p3=&c;
cout<<"c="<<*p3<<endl;
// *p3=2; 不被允许
cout<<"测试3:指向常量的常指针"<<endl;
cout<<"测试3.1"<<endl;
int d=1;
int d1=10;
const int *const p4=&d;
cout<<"d="<<*p4<<endl;
d=2;
cout<<"d="<<*p4<<endl;//可以直接改变d的值
// *p4=3; 不允许通过该指针改变d的值
// p4=&d1; 不允许改变该指针指向的地址
cout<<"测试3.2"<<endl;
int e=1;
int e1=2;
int const *const p5=&e;//交换 int 与第一个const 的位置
cout<<"e="<<*p5<<endl;
//*p5=3; 不允许通过该指针改变d的值
// p5=&e1; 不允许改变该指针指向的地址
return 0;
}
运行结果:
测试1:常指针
a=1
a=2
a=3
a=3
测试2:指向常量的指针
测试2.1
b=1
测试2.2
b=2
c=1
测试3:指向常量的常指针
测试3.1
d=1
d=2
测试3.2
e=1