const char*, char const*, char*const 的区别;指针常量,常量指针的区别

Bjarne在他的The C++ Programming Language里面给出过一个助记的方法:
把一个声明从右向左读:
char * const cp; cp is a const pointer to char;
const char * p;   p is a pointer to const char;
char const * p;   同上(因为C++里面没有const*的运算符,所以const只能属于前面的类型);

结论:
char * const cp     : 定义一个指向字符的const指针,即指针常量
const char* p       : 定义一个指向字符常数的指针,即常量指针
char const* p       : 等同于const char* p

指针常量
一种类型为指针的常量,即指针本身为常量,指针指向的地址不可以改变,但是指向的地址所对应的内容可以改变
指针常量的申明:Type * const pointer ;
cp = p //错误 因为这是一个指针常量,改变指向的地址了
*cp = ‘a’ // 正确 因为指向的地址的内容是可以变化的

常量指针
一种指针,指向的内容为常量;指针所指向的内容不能变,但是指向的地址可以改变
常量指针的申明:const Type *pointer / Type const* pointer;
cp = p //正确 因为这是一个常量指针,可以改变指向的地址
*cp = ‘a’ // 错误 因为指向的地址的内容是不可以变化的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值