const 位置与指针的关系

int b = 500;
const int* a = &b; 			[1]
int const *a = &b;			[2]
int* const a = &b;			[3]
const int* const a = &b;	    [4]

typedef        char *         Pchar; // pointer to char
typedef const Pchar          CPchar; // const pointer to char
typedef const  char *        PCchar; // pointer to const char
typedef       Pchar *        PPchar; // pointer to pointer to char
typedef const  char * const CPCchar; // const pointer to const char
typedef      PCchar *       PPCchar; // pointer to pointer to const char

我们可以参考《Effective c++》Item21上的做法:

   1, 如果const位于星号的左侧,则const就是用来修饰指针所指向的变量,即指针指向为常量。

   2, 如果const位于星号的右侧,const就是修饰指针本身,即指针本身是常量。因此,[1]和[2]的情况相同,都是指针所指向的内容为常量(const放在变量声明符的位置无关),这种情况下不允许对内容进行更改操作,如不能*a = 3 。

   3, [3]为指针本身是常量,而指针所指向的内容不是常量,这种情况下不能对指针本身进行更改操作,如a++是错误的。

   4, [4]为指针本身和指向的内容均为常量。

 总结起来就是左常量右指针


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值