对于const量写法的位置

本文详细解析了C++中指针与const的使用方式,包括如何定义指向const对象的指针、常量指针及其限制,并通过typedef进行类型别名定义时const的位置与含义。同时探讨了在实际编程中应如何正确理解和应用这些概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    1。对于指针的讨论比较多
          const int* p = &ci1;
          p = &ci2;
          这是指向一个const对象的指针,而p是个指针变量,可以指向ci1,也可以变指向的到ci2

          把const写在*之后那就是个常量指针了,p是指针常量,定义时初始化,以后再不能改变指向了
          int * const p = &i1;
          p = &i2; //err

          二者结合的情况
          const int* const p = &ci3;

    2。涉及typedef的情况
          先说一种意见
          定义常量可以 const int ci1 = 0;
                          可以 int const ci2 = 0;

          typedef char*  C;
          const C p = &ch;
          这个p是什么呢,是const char* p还是char* const p;
          是后者,
          原因:const C p中C是个类型,const是修饰p的
       
          所以基于这点,个人建议写const量定义的时候,用int const ci2 = 0;的形式,显式说明const是修饰ci2的
          所以,
          typedef char*  C;
           C const p = &ch;

    3。论坛回复解释
typedef char *cstring;
extern const cstring cstr;
=============
简易理解方法
typedef并不是宏扩展直接展开
按宏扩展,extern const cstring cstr;《=》extern const char *cstr
你这样看
typedef int cstring;
extern const cstring cstr;
你觉得const是修饰什么呢,是说cstr是个const属性吧,这就对了,那这个cstr是什么类型呢,cstring,即现在的int,所以cstr是个const属性的int量
那现在,typedef char * cstring;
const修饰什么呢,是cstr,所以cstr是const属性,
cstr是什么类型呢,char *字符指针类型,所以cstr是个const属性的字符指针变量
这就清楚了,
指针是个const,不是说指向的对象是个const,所以《=》extern char * const cstr
希望说清楚了
         
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值