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右侧紧跟着的是指针还是常量,是指针就是常量指针,是常量就是指针常量。