指针常量和常量指针

这两个概念经常分不清,今天好好总结一下。
一、指针常量
先说指针常量,是因为它和我们常用的数组有关系。
指针常量的声明

int * const p;

指针声明操作符*在常量限定符const前面,叫做指针常量。忽然发现了一点规律^_^。
const限定符修饰的是指针。数组名就是一个指针常量。而数组名和指针有什么区别呢?可以通过引用数组名去修改指向的内存,但是自身不可以被赋值,不可以进行++、–操作。

二、常量指针
常量指针的声明

const int * p1;
int const * p2;

常量限定符const在指针声明操作符*前面,叫做常量指针
const修饰的是指针指向的内存地址。常量指针和上面的指针常量在赋值行为上相反。自身可以被赋值,支持++、–操作,但是不可以通过指针的引用去修改指向的内存。

总结:记住“数组名就是指针常量”,这个蛋疼的问题就算解决了。

注:
Peter van der Linden写的《expert C programming》在第69页提到const和volatile的优先级:
If a const and/or volatile keyword is next to a type specifier (e.g. int, long, etc.) it applies to the type specifier. Otherwise the const and/or volatile keyword applies to the pointer asterisk on its immediate left.
而徐波前辈翻译时在第64页写到:
如果const和(或)volatile关键字的后面紧跟…
从常量指针的声明可以看出const只要和类型说明符相邻,则const就作用于类型说明符。所以next to在此应译作在…旁边。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值