/* 目录: 一 常量指针 : const int *p 二 指针常量 : int const *p 三 指针常量 : int * const p 四 指向常量的指针常量 : const int * const p
int const * const p
*/
const int *p; 常量指针: 1 指向地址 - 可变 2 指向数据 - 可以读取,不能写入 int const *p; int * const p; 指针常量: 1 指向地址 - 不变 2 指向数据 - 可以读写
一 常量指针 : const int *p
// 常量指针 : const int *p int main(int argc, char *argv[]) { int i = 10; int j = 20; const int *pInt = &i; printf("%d ", *pInt); pInt = &j; // 指向地址 - 可变; 指向数据 - 不变 printf("%d ", *pInt); // *pInt = 2; // error C3892: “pInt”: 不能给常量赋值 return 0; }
二 指针常量 : int * const p
// 指针常量 : int * const p int main(int argc, char *argv[]) { int i = 10; int j = 20; int * const pInt = &i; printf("%d ", *pInt); *pInt = 1; // 指向地址 - 不变; 指向数据 - 可变 printf("%d ", *pInt); // pInt = &j; // error C3892: “pInt”: 不能给常量赋值 return 0; }
三 指针常量 : int * const p
// 指针常量 : int * const p int main(int argc, char *argv[]) { int i = 10; int j = 20; int * const p = &i; printf("%d ", *p); *p = 1; // p = &j; // error - 地址 return 0; }
四 指向常量的指针常量 : const int * const p
// 指向常量的指针常量 int main(int argc, char *argv[]) { int i = 10; int j = 20; const int * const p = &i; printf("%d ", *p); // *p = 1; // error // p = &j; // error return 0; }