C++中指针常量和常量指针(小白学习总结)
最近学到常量指针和指向常量的指针,懵圈了一段时间,特来总结如下:
1. 指向常量的指针(底层const)
const int a=0;
const int* p=&a;
不能通过指针改变常量的值,可是要注意的是,指向常量的指针允许指向一个非常量。
const int a=07;
const int* p=&a;
int b=3;
p=&b;
输出结果:
这里注意不要写成如下格式,会报错,百度一下是因为引入了二级指针,只能在定义的时候这么写,如int *p=&a;
*p=&b;//报错
2. const指针(顶层层const)
常量指针即指针本身是一个常量,存在指针中的那个地址无法更改。
int a = 1;
int *const p = &a;
*p = 0;
cout << *p << endl;
cout <<p << endl;
*p = 4;
cout << *p << endl;
cout << p << endl;
return 0;
指针本身为一常量,注意的是,依然可以通过指针修改其所指对象的值(取决于指向的对象是否为一常量)。以上程序输出结果,插入断电调试,可以看到指针p的地址没有改变,而所指对象的值是可以更改的。