指向常量的指针与地址固定的指针区别及定义方法
C语言定义固定指向指针的方法
你需要把const关键字放在指针运算符*的右侧,即可修饰指针本身使其存储的地址不可修改,正确语法如下:
int* const p2 = &a;
特性说明
- 指针本身的指向初始化后无法修改:执行
p2 = &b;会直接触发编译报错,完全符合你的需求 - 指向的内容可修改(只要指向的变量本身无const限制):执行
*p2 = 100;是合法操作,对应修改变量a的值 - 注意:这类指针必须在声明时就完成初始化,否则也会触发编译错误
和你已知的const int*的核心区别
const int* p(也可写作int const * p):const修饰指针指向的内容,指向可改(p = &b合法),指向的内容不可改(*p = 100报错)int* const p:const修饰指针本身,指向不可改(p = &b报错),指向的内容可改(*p = 100合法)- 如果需要指向和指向的内容都不可改,可以写作
const int* const p
代码验证示例
int a = 10; int b = 20; // 固定指向的指针必须在声明时就初始化 int* const p2 = &a; *p2 = 30; // 合法,a的值会被修改为30 p2 = &b; // 编译报错:assignment of read-only variable 'p2'
内容的提问来源于stack exchange,提问作者Sandeep
相关产品推荐
相关产品推荐

