指针常量和常量指针
指针变量和变量指针其实是const和*之间的较量
如何读以及如何理解
一、如何读: *(指针)和 const(常量) 谁在前先读谁 二、如何理解: * 象征着地址,const象征着内容;谁在前面谁就不允许改变。
常量指针
- 定义:
const *p;
- 解析:
- 指针可以指向任意变量
- 不能通过指针修改变量的值
指针常量
- 定义:
* const p;
- 解析
- 指针不指向其他地址
- 可通过指针修改变量的值
完整示例:
int main(int argc, const char * argv[]) {
//1. 常量指针:1>指针可以指向任意变量;2.不能通过指针修改变量的值
int a = 10;
const int *p1 = &a;
printf("a address = %p\np1 point address1 = %p\n",&a,p1);
//1.1>指针可以指向任意变量;
int b = 20;
p1 = &b;
printf("b address = %p\np1 point address2 = %p",&b,p1);
//1.2>不能通过指针修改变量的值
// *p1 = 0;//编译失败:Read-only variable is not assignable
printf("\n\n----------以上为常量指针,以下为指针常量----------\n\n");
//2.指针常量:2.1>指针不可指向其他地址;2.2可通过指针修改变量的值
int c = 100;
int *const p2 = &c;
printf("c value = %d,c address = %p\n",c,&c);
printf("p2 point address1 = %p\n",p2);
//2.1>指针不可指向其他地址
int d = 200;
// p2 = &d;//编译失败:Cannot assign to variable 'p2' with const-qualified type 'int *const'
//2.2可通过指针修改变量的值
*p2 = d;
printf("d = %d,c=%d\n",d,c);
printf("p2 point value=%d\n",*p2);
return 0;
}
欢迎关注公众号与我联系
