-
常量指针 ( const int *p1 = &a )
可以改变指针指向的地址,但不可以改变指针指向地址的值;
-
指针常量 ( int * const p2 = &a )
可以改变指针指向地址的值,但不可以改变指针指向的地址
-
const既修饰指针也修饰常量 ( const int *const p3 = &a )
既不可以改变指针指向地址的值,也不可以改变指针指向的地址
一段代码示例(读者可自行摘取运行):
#include <iostream>
using namespace std;
int main() {
int a = 1;
int b = 2;
//常量指针
const int *p1 = &a;
p1 = &b; //*p1 = 2; 报错
cout << "*p1 = " << *p1 << endl;
//指针常量
int * const p2 = &a;
*p2 = 3; //p2 = &b; 报错
cout << "*p2 = " << *p2 << endl;
//const既修饰指针也修饰常量
const int *const p3 = &a;
//*p3 = 3; 报错
//p3 = &b; 报错
return 0;
}