C++指针常量和常量指针
指针是常量的指针
#include <iostream>
using namespace std;
int main() {
int a = 1;
int b = 2;
int * const c = &a;//c指向a,c是指针常量,c不可被修改
c = &b;//错误,c被const修饰,无法赋值
*c = 3;//正确,*c没有被const修饰,可以赋值
return 0;
}
指向常量的指针
#include <iostream>
using namespace std;
int main() {
int const a = 1;
int const b = 2;
int const * c = &a;//c指向a,c是常量指针,*c不可被修改
c = &b;//正确,c没有被const修饰,可以赋值
*c = 3;//错误,*c被const修饰,无法赋值
return 0;
}
指向常量的是常量的指针
#include <iostream>
using namespace std;
int main() {
int const a = 1;
int const b = 2;
int const * const c = &a;//c指向a,c是指向常量的常指针,c不可被修改,*c不可被修改
c = &b;//错误,c被const修饰,无法赋值
*c = 3;//错误,*c被const修饰,无法赋值
return 0;
}
总结
复合类型,从右往左读有助于分辨类型,const修饰右边部分无法被修改,所以
const *
p,*
p无法被修改,
*
const p,p无法被修改。