// 常量指针(被指向的对象是常量) intmain(){ int i = 10; int i2 = 11; constint *p = &i; printf("%d\n", *p);//10 i = 9; //OK,仍然可以通过原来的声明修改值, //Error,*p是const int的,不可修改,即常量指针不可修改其指向地址 //*p = 11; //error: assignment of read-only location ‘*p’ p = &i2;//OK,指针还可以指向别处,因为指针只是个变量,可以随意指向; printf("%d\n", *p);//11 return0; }
指针常量(指针本身是常量)
定义:
本质是一个常量,而用指针修饰它。指针常量的值是指针,这个值因为是常量,所以不能被赋值。
关键点:
它是个常量!
指针所保存的地址可以改变,然而指针所指向的值却不可以改变;
指针本身是常量,指向的地址不可以变化,但是指向的地址所对应的内容可以变化;
代码形式:
1
int* const p;
1 2 3 4 5 6 7 8 9 10 11 12 13 14
//指针常量(指针本身是常量) #include<stdio.h>
intmain(){ int i = 10; int *const p = &i; printf("%d\n", *p);//10 //Error,因为p是const 指针,因此不能改变p指向的内容 //p++;//error: increment of read-only variable ‘p’ (*p)++; //OK,指针是常量,指向的地址不可以变化,但是指向的地址所对应的内容可以变化 printf("%d\n", *p);//11 i = 9;//OK,仍然可以通过原来的声明修改值, return0; }