指针常量
指针常量可以理解为——指针类型的常量,顾名思义,指针常量实际上为一个常量,只不过是指针类型修饰的。
格式:
int* const p //指针常量
案例:
int a = 1;
int b = 2;
int* const p = &a;
cout << "a的地址:" << &a << endl;
cout << "p的地址:" << p << endl;
cout << "p的值:" << *p << endl;
//p = &b //错误
*p = 10;
cout << "p的值:" << *p << endl;
a = 20;
cout << "p的值:" << *p << endl;
输出:
a的地址:010FF930
p的地址:010FF930
p的值:1
p的值:10
p的值:20
首先,定义两个变量a和b。其次,定义一个指针常量p,并将变量a的地址赋给p。由输出结果可以看出,p成功的指向了a的地址。此时,将b的地址赋给p,发现出错,错误如下:
由此可以发现,当指针常量p的地址确定后便不能进行修改。但是同时实验可以看出,虽然地址无法修改,但是指针指向的值可以进行修改。
常量指针
常量指针可以理解为——指向一个常量的指针,顾名思义,其本质为一个指针,并且这个指针是一个指向常量的指针。
格式:
const int* p //常量指针
案例:
int a = 1;
int b = 2;
const int* p = &a;
cout << "a的地址:" << &a << endl;
cout << "p的地址:" << p << endl;
cout << "p的值:" << *p << endl;
p = &b;
cout << "p的地址:" << p << endl;
cout << "p的值:" << *p << endl;
b = 3;
cout << "p的地址:" << p << endl;
cout << "p的值:" << *p << endl;
//*p = 10;//错误
输出:
a的地址:003DFA9C
p的地址:003DFA9C
p的值:1
p的地址:003DFA90
p的值:2
p的地址:003DFA90
p的值:3
同样,定义两个变量a和b,并将a的地址赋给常量指针p。此时通过输出结果可以发现,a和p的指向同一块地址。其次,将b的地址赋给p来改变p的指向,可以发现此时并未出错,通过输出发现p已经指向b所在的地址。并且对b的值进行修改时依旧可以正常输出。但是,b的值不能通过该指针修改,其原因是因为p为const int*型。
版权声明:本文为qq_43899283原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。