const 指针
在普通指针类型前面,加上const修饰
例如:
const int* p;
const char* p;
const double* p;
const 指针:区别
加不加const,有什么区别?
// 1-不加const
int a = 10;
int* p = &a;
*p = 20; // 可写
int b = *p; // 可读
// 2-加上const
int a = 10;
const int* p = &a;
*p = 20; // Error ❌,不可写
int b = *p; // 可读
const的作用是限制星号操作里的写内存功能(这块内存只能读,不能写)
const指针:用途
const 用于限定函数的参数
int test(const int*p, int len) {
for(int i=0; i<len; i++) {
printf("%d \n", *p); // 可以读取
p = p + 1; // 没问题
*p = 20; // Error ❌ Read-only variable is not assignable
}
}
用于显式地制定:该函数的参数是输入参数,在函数里面只是读取这个内存,而不会修改这个内存的值
当你不需要修改内存时,在指针前面加上const修饰,避免一不小心的错误发生。
const只是限制的星号操作,不允许写内存,但是对于普通的指针加减法是没关系的
const 一个不常用的语法
int a = 10;
int b = 20;
int* const p = &a; // 这是另一种语法, 实际开发中不会用到
p = &b; // Error ❌ Cannot assign to variable 'p' with const-qualified type 'int *const'
const 总结
- const 指针:表示该内存是只读的
- 常用于修饰函数的参数,当被const修饰,表示该参数仅用于输入
int test(const int*p, int len)
。
网友评论