菜鸟笔记
提升您的技术认知

指针常量与常量指针

网络上有很多有关指针常量和常量指针的用法讲解,下面我来介绍下自己的理解:
首先个人认为这两个词的重心在后两个字。
常量指针(指针):(指向常量的)指针。
int a = 10;
int b = 20;
const int* p1 = NULL;
p1 = &a;
// 指针p1所指向的变量是一个常量,即指针p1在解引用时,值不能改变
p1 = 20;这里插入代码片
指针常量(常量):(指针本身是一个)常量。
// 指针常量
int
const p2 = &a;
// 指针只能指向a的地址,a的值可以改变,指针p2已经指向了a的地址,所以不能指向b;
p2 = &b;
也可以这样理解:直接看const 关键字的位置如下:
常量指针:
const int
p1 = nullptr;或者 int const * p1 = nullptr;
指针常量:
int* const p2 = nullptr;

int a = 10;
int b = 20;
const int* p1 = NULL;
p1 = &a;
// 指针p1所指向的变量是一个常量,即指针p1在*解引用时,值不能改变
*p1 = 20;
// 指针常量
int* const p2 = &a;
// 指针只能指向a的地址,a的值可以改变,指针p2已经指向了a的地址,所以不能指向b;
p2 = &b;
//常量指针:
const int* p1 = nullptr;或者 int const * p1 = nullptr;
//指针常量:
int* const p2 = nullptr;