一、类别一:Const 修饰整个指针 --- 常量指针
二、类别二:Const 修饰指针的常量 --- 指针常量
三、类别三:Const 同时修饰指针和指针常量
四、区分指针常量和常量指针的记忆方法
一、常量指针(const int *p = &a)
1.1概念
即所定义的指针指向的是常量,且const修饰的是整个指针
1.2特点
指针的指向可以修改,但是指针指向的值不可以修改。
1.3代码
int a = 10;
int b = 20;
const int *p = &a;
p = &b; (由常量指针的特点知,该操作为改变常量指针的指向是可行的)
*p = 20;(由常量指针的特点知,该操作为改变常量指针的指向的值是不可行的)
二、常量指针( int * const p = &a)
2.1概念
即所定义的指针指向的是常量,且const修饰的是整个指针变量
2.2特点
指针的指向不可以修改,但是指针指向的值可以修改。
2.3代码
int a = 10;
int b = 20;
int * const p = &a;
p = &b; (由指针常量的特点知,该操作为改变常量指针的指向是不可行的 ×)
*p = 20;(由指针常量的特点知,该操作为改变常量指针的指向的值是可行的 √)
三、同时修饰( const int * const p = &a)
3.1概念
即所定义的指针指向的是常量,且const即修饰的是整个指针也修饰指针常量
3.2特点
指针的指向和指向的值都不可以修改。
3.3代码
int a = 10;
int b = 20;
int * const p = &a;
p = &b; (由同时修饰的特点知,该操作为改变常量指针的指向是不可行的 ×)
*p = 20;(由同时修饰的特点知,该操作为改变常量指针的指向的值是不可行的 ×)
四、记忆方法
const 翻译为常量,*翻译为指针
指针常量:
代码为:int * const p = &a;(*在const前,故翻译为指针常量)
此时const修饰的是指针p,所以此时不能修改指针的指向。
常量指针:
代码为:const int * p = &a;(const在*前,故翻译为常量指针)
此时const修饰的是*,所以此时*的操作不能使用(即*p是不能操作的)