const的一种易混淆的写法

const的两种常见书写风格:
 const double d = 1.1; //写法(1)
 double const d2 = 2.2; //写法(2)
这两种写法语法上都对,且意思一样。都定义了一个double常量。
你更赞同哪种写法?

 

写法(1)更常见,我却认为写法(2)更合理。下面例子中写法(1)会导致严重的误解:
 typedef char *cstr;
 const cstr cs = "abc";
这个变量cs的类型是const char *呢还是char *const?
答案是后者:
 cs = "ef"; //error, cs 是一个常量指针
 *cs = 'A'; //ok. cs变为"Abc"
如果cs的定义按下面写法就不会产生误解了:
 cstr const cs = "abc"; 
依此类推,定义一个常量指针csp,它指向一个const字串:
 char const * const csp = "123"; 
 //而不是:const char * const csp = "123"; 

写法(1)太常见了,书上介绍const都是这么写地,却如此地让人混淆。
使用写法(2)大家认为有道理没。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值