常量指针与指针常量之区别

在说常量指针与指针常量之前,先来看一看一个普通指针的使用

int *pa

大家知道pa代表一个指向int类型值的指针.用另一种方式解读为:取pa所指向的地址内的值后,其值类型为int

应该说,编译器只认识的是int型,int*型是不存在的

int *pa 应该看作  int (*pa)

                   而非 (int*) pa 

                   即(*pa)是一个int型的值


言归正传,套路常量指针与指针常量

下面看常出现的几种形式:

const int *pa;

int const *pa;

int* const pa;


针对以上三种表达方式,现在分析const所修饰的对象,即看其后面的对象。

可以很容易的发现,第一和第二种表达方式const修饰的都是*pa,第三种表达方式const修饰的是pa。

由于*pa代表pa所指向地址中的对象,pa代表的是指针。

可得出结论

     const int *pa;

     int const *pa;

     代表的是*pa的内容为const类型,即指针所指向的地址中的内容是不可变的,我们称其为常量指针(指向常量的指针)。


     int *const pa;

     代表的是pa指针为const类型,即指针是不能变的,指针内部存放的是其指向的地址,所以该指针只能一直指向同一个地址啦,我们称其为指针常量(指针本身是个常量)。


至于指向常量的常量指针,也可以通过以上规则来分析,一样的道理。


就是这么简单


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值