#include <iostream>
#define INTPTR1 int *
typedef int * INTPTR2;
using namespace std;
int main()
{
INTPTR1 p1, p2; // p1: int *; p2: int
INTPTR2 p3, p4; // p3: int *; p4: int *
int var = 1;
const INTPTR1 p5 = &var; // 相当于 const int * p5; 常量指针,即不可以通过 p5 去修改 p5 指向的内容,但是 p5 可以指向其他内容。
const INTPTR2 p6 = &var; // 相当于 int * const p6; 指针常量,不可使 p6 再指向其他内容。
int a = 10;
p6 = &a;
return 0;
}
const INTPTR2 p6 为啥相当于 int * const p6呢?
const INTPTR2 p6 = &var;
和INTPTR2 const p6 = &var;
是等价的int * const p6 = &var;
中const
修饰的是p6
,所以p6
的值不能更改,也就是不能使p6
指向其他内容。同样的INTPTR2 const p6 = &var;
中const
修饰的也是p6
。