1、const修饰的是*,*p是只读的,p可读可写(常量指针)
void test01() {
int a = 10;
int b = 20;
const int* p = &a;//等同于int const* p = &a;//*p = 20; //错误,*p只读
p = &b; //正确,指针的指向可以修改
printf("%d\n", *p);
}指针指向的值不可以改变,指针的指向可以改变
2、const修饰的是p,p是只读的,*p可读可写(指针常量)
void test02() {
int a = 10;
int b = 20;
int* const p = &a;//p = &b;//错误,指针的指向不可修改
*p = 34;//正确,指针指向的值可以修改
printf("%d\n", *p);
}指针的指向不可以改变,指针指向的值可以改变
3、const修饰的是*和p,p和*p都是只读的
void test03() {
int a = 10;
int b = 76;
const int* const p = &a;
//*p = 32;错误
//p = &b;错误
}
4、记忆小技巧
将const看成常量,*看成指针;
①const int *p = &a;
常量指针,指针指向的值只读, 指针的指向可读可写
②int* const p = &a;
指针常量,指针的指向只读,指针指向的值可读可写