const指针

const指针

const 限定符要求 ptr 必须在定义时初始化。

// `const int *ptr` 和 `int const *ptr` 等价
const int* ptr;
// 或
int const *ptr;  

含义:指针 ptr 指向的值不能修改,但 ptr 本身可以指向其他地址。

可以 指向不同的变量(可以 ptr = &b;); 不能 修改指向的变量的值(不能 *ptr = 15;)。

int *const ptr = &a;
// 等价
int* const ptr = &a;
int* const ptr;  // ❌ 错误!常量指针必须初始化
// 编译器报错
error: uninitialized const ‘ptr’ [-fpermissive]

含义ptr 的地址不能修改(不能 ptr = &b;),但 ptr 指向的值可以修改。

可以 修改指向的值(可以 *ptr = 15;);不能 指向其他变量(不能 ptr = &b;)。

因为 ptrconst,意味着它的地址在创建时就必须确定,不能留到之后再赋值。

const int* const ptr = &a;

含义:既不能修改 ptr 指向的值,也不能改变 ptr 的指向。

不能 修改指向的值(不能 *ptr = 15;);不能 指向其他变量(不能 ptr = &b;)。

四种指针的对比

类型作用
int *ptr普通指针,既能修改指向的值,又能修改指针的指向
const int* ptrint const *ptr指向的值不能修改,但指针的指向可以修改
int* const ptr指针的指向不能修改,但指向的值可以修改
const int* const ptr既不能修改指针的指向,也不能修改指向的值

实际应用场景

  1. const int *ptr(保护数据不被修改)

    • 用于防止函数修改参数值。

    • 避免函数内部无意中修改传入的数据。

  2. int* const ptr(保护指针地址不被修改)

    • 用于管理资源,确保指针不会改变所指向的对象。
  3. const int* const ptr(完全不可变)

    • 适用于只读配置。

判断const限定符的作用要看的位置:const在左边限定指向的值,在*右边限定指针本身

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值