const修饰指针有三种情况:
- const修饰指针 — 常量指针
- const int * p = &a;
- 特点:指针指向可以修改,但是指针指向的值不可以改
- const修饰常量 — 指针常量
- int * const p = &a;
- 特点:指针的指向不可以改,指针指向的值可以改
- const既修饰指针,又修饰常量
- const int * const p = &a;
- 特点:指针的指向和指针指向的值都不可以改
- *p = 20; //错误
- p = &b; // 错误
#include <iostream>
using namespace std;
int main(void) {
//1.const修饰指针
int a = 10;
int b = 10;
const int* p = &a;
// 指针指向的值不可以修改,指针的指向可以修改
//*p = 20;错误
p = &b; // 正确
//2.const修饰常量
//指针的指向不可以改,指针指向的值可以改
int* const p2 = &a;
*p2 = 100;// 正确
//p2 = &b; // 错误,指针的指向不可以改
//3.const修饰指针和常量
const int* const p3 = &a;
//指针的指向和指针指向的值都不可以改
//p3 = 100; // 错误
//*p3 = &b; // 错误
return 0;
}
技巧:
- 看const右侧紧跟着的是指针还是常量,是指针就是常量指针,是常量就是指针常量。