const关键字

以下3个有什么区别
char * const p; //常量指针,p 的值不可以修改
char const * p;//指向常量的指针,指向的常量值不可以改
const char *p; //和 char const *p

在 C/C++ 中,const 关键字的使用可以让我们指定指针和它指向的数据的可修改性。你提到的三个声明的区别主要体现在指针的性质和指向的数据的可修改性上。下面是对每个声明的详细解释:

1. char * const p;

  • 含义p 是一个常量指针,它指向 char 类型的变量。
  • 特性
    • p 的值(即指针指向的地址)不可更改。你不能使 p 指向另一个地址。
    • p 指向的数据(即 *p)是可以修改的。
  • 示例
    char a = 'A';
    char b = 'B';
    char * const p = &a; // p 是一个常量指针
    *p = 'C';            // 合法,修改了 p 指向的数据
    // p = &b;          // 错误,不能修改 p 的指向
    

2. char const * p;

  • 含义p 是一个指向常量 char 的指针。
  • 特性
    • p 的值(指针指向的地址)是可以更改的。你可以使 p 指向不同的 char 变量。
    • p 指向的数据(即 *p)不可修改。
  • 示例
    char a = 'A';
    char b = 'B';
    const char * p = &a; // p 是一个指向常量的指针
    // *p = 'C';        // 错误,不能修改 p 指向的数据
    p = &b;              // 合法,可以改变 p 的指向
    

3. const char *p;

  • 含义:与 char const * p; 相同,p 是一个指向常量 char 的指针。
  • 特性
    • 行为与 char const * p; 完全相同。
    • 你可以自由地将它们视为同义词。

总结对比

声明指针的可变性指向数据的可变性
char * const p;不可更改(常量指针)可修改
char const * p;可更改不可修改(指向常量)
const char * p;可更改不可修改(指向常量)

总结

  • 使用 const 关键字可以有效地控制指针和指向数据的可修改性。理解这些区别可以帮助你更好地管理内存和保护数据不被意外修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值