C++笔记:常指针之——指针常量与常量指针
const int *p;
int const *p; // const 与 int 不分先后,意义相同。
此类指针我们称之为常量指针。顾名思义,指针指向的值是一个常量(语法上的,编译器认为该值不可通过指针修改)。记忆方法:const修饰的 (*P),*p解引用就是指针所指向之值,所以常量指针修饰的值为常量(不可做左值被修改)。
示例代码:{
int a = 10;
const int* p = &a;
int *q = p; // 此语句错误的, int* <== const int* 的指向赋值,普通指针存在修改常量的风险,编译器报错。
}
int* const p;
指针常量。即指针本身是一个常量,不可改变指针的指向。而指针指向的内容任然是可修改的。
特点:指针常量本身任然是一个指针,也就是说 int* const p 与 int *p 的类型都是 "int* "类型。因此,我们可以认为指针常量是一个限定了指向的指针。
记忆方法:const 修饰了 (p),p是一个指针,也就是说const限制的p不能改变指向。
示例代码:{
int a = 10;
int* const p = &a;
int *q = p; // 此语句正确,本质上是指针的 int* <== int* 的指向赋值
}
总结:
常量指针:指向常量的指针。const int *p; 或 int const *p;
指针常量:限定指向的指针。int* const p;
指向常量的指针常量:不可改变指向,且可修改内容的指针。const int* const p = &a;