关于const修饰指针

const修饰的变量应该是只读的变量。在修饰指针类型时,由于其所处的位置的不同,修饰的内容就不同,这就导致了在分析其修饰内容时的一些困难。

比如:分析以下几种情况

const int *p;

int const *p;

int * const p;

const int * const p;

这四种情况分别为

const int *p;         //p可变,p指向的对象不可变       
int const *p;         //p可变,p指向的对象不可变 
int * const p;        //p不可变,p指向的对象可变 
const int * const p;  //指针p和p指向的对象都不可变 </span>
你没有觉得特别难以记住这几种情况,这里有比较容易记住的方法:

方法一:

        先忽略类型名(编译器解析的时候也是先忽略类型名),我们再看const离哪个最近,离谁最近就修饰谁。

const int *p;         //const修饰*p,p是指针,*p是指针所指向的对象,不可变      
int const *p;         //const修饰*p,p是指针,*p是指针所指向的对象,不可变
int * const p;        //const修饰p,p不可变,p指向对象的*p可变
const int * const p;  //前一个const修饰*p,后一个const修饰p,指针p和p指向的对象*p都不可变

方法二:

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

       如果const位于星号的右侧,const就是修饰指针本身,即指针本身为常量,不可变。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值