辨别常量指针和指针常量_C
举例
const char *p; //常量指针
char const *p; //常量指针
int a = 10;
char* const p = &a; //指针常量
const char* const p = &a; //指针常量指向一个常量
记忆:
遇见const读常量,遇见*读指针。
所以第一行和第二行的代码都可以看做const * 即为常量指针。
第三行的代码看作 * const,即为指针常量。
常量指针(只读指针)
const char *p;
char const *p;
这里 const 修饰的是*p,*p是常量,p是变量。即const指向的值不能改变,但p的指向可以改变。
常量指针是一个指针,指针所指向的内容是一个常量。
指针常量
int a = 10;
char* const p = &a;
这里 const 修饰的是p,p是常量,而 * 又修饰常量p,所以 p 里存的值是一个地址,又因为 p 是常量,所以定义时一定要赋初值,一旦赋值,以后这个常量再也不能指向别的地址。
p的指向不能改变,但其指向的值可以改变。
指针常量是一个常量,这个常量被指针修饰。
指针常量指向一个常量。
const char* const p;
即一个指向不能改变的指针,指向一个常量。