在c++中,指针常量与常量指针是经常听到的概念,很多学生一开始都搞不太清楚:
1、如果指针不可以改变就叫指针常量,如 int *const p = &a;这里的p++或者将p指针其他的地址都的错误,所以叫指针常量
2、如果值不可以改变就叫常量指针,如const int *p = &a;这里如果执行*p = b;那么报错,所以叫常量指针
下面代码演示:
#include<iostream>
using namespace std;
void test1(){
int a = 10;
int * const p = &a;//指针常量,p不可改变,p++ ERROR
*p = 100;//可以通过*p重新给a赋值
cout<<*p<<endl;
}
void test2(){
int a = 10;
int b = 100;
const int *p = &a;//常量指针,*p不可以改变
p = &b;//p可以改变指向
cout<<*p<<endl;
}
int main(){
test2();
return 0;
}
总结:很多同学可能还是搞不太清楚;这里给个口诀:const后面跟谁谁就不可以改变;
int *const p;//const 后面跟的p那么p就不可以改变
const int * p;//const 后面跟的*p那么*p就不可以改变
注:const int 等于 int const ;既 const int *p = int const *p