面试经常被问到常量指针和指针常量,这里做个总结
1.常量指针
如果定义指针变量的时候,有const修饰且const位于“*”的前面,这样的指针被称为常量指针。
//常量指针:指针的方向可以改变,但是不能通过指针修改变量的值
int a = 10;
int b = 20;
const int* p = &a;//也可以这样int const *p=&a;一个意思
p = &b;//指针方向可以改变
*p=30;//错误做法
cout << *p << endl;//20
2.指针常量
指针常量,修饰的是常量,意思就是指针的只能指向一个地方,不能改变指向。
//指针常量,指针指向不能改变
int a = 10;
int b = 20;
int* const p = &a;
p = &b;//错误的,指向改变了
*p = 30;//正确做法
3.指针的指向不能改变且不能通过指针修改变量的值
int a = 10;
int b = 20;
const int* const p = &a;
p = &b;//错误操作
*p = 30;//错误操作