关于指针赋值和const使用的一些规则

 

将常量或非常量数据的地址赋给指向常量的指针是合法的:

double rates[3]={88.99,100.12,340.5};

const double locked[4]={0.08,0.075,0.0725,0.07};

const double *pc=rates;   //合法

pc=locked;                      //合法

pc=&rates[3];                  //合法

然而,只有非常量数据的地址才可以赋给普通的指针:

double rates[3]={88.99,100.12,340.5};

const double locked[4]={0.08,0.075,0.0725,0.07};

double *pc=rates;           //合法

pc=locked;                      //非法

pc=&rates[3];                  //合法

这样的规则是合理的。否则,就可以使用指针来修改被认为是常量的数据。

在函数参量定义中使用const,不仅可以保护数据,而且使函数可以使用声明为const的数组。

const还有很多用法。例如:可以使用关键字const来声明并初始化指针,以保证指针不会指向别处,关键在于const的位置:

double rates[3]={88.99,100.12,340.5};

double * const pc=rates;          //pc指向数组的开始处

pc=&rates[2];                          //不允许

*pc=92.99                              //可以,更改rates[0]的值

这样的指针仍然可以用于修改数据,但它只能指向最初赋给它的地址。

最后,可以使用两个const来创建指针,这个指针即不可以更改所指向的地址,也不可以修改所指向的数据:

double rates[3]={88.99,100.12,340.5};

const double * const pc=rates;

pc=&rates[2];              //不允许

*pc=92.99                  //不允许

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值