关键字const的使用技巧

const只是个限定符,用来表示这个符号不能赋值,意思为“只读的”!

例:

const int limit = 10;   // limit不能被赋值,为只读的,始终为10;

【深入了解 const】
const int *p = &limit; // 我们定义了一个指向【整形常量】的指针p;

int i = 27;           // 定义一个整形变量i,初值为27;

p = &i;    // 将i的地址赋值给p,

-----------注意------------

此时p,可以赋值了,*p 值为 27了,这是为什么?

因为const int *p = &limit;只是限定了p指向的【整形常量】,这个常量是不能改变的,

即,*p =27; 这条语句是不合法的,因为*p是不能改变的,但是指针p的值是可以改变的.

(vs2008报错为:1>d:/visual studio 2008/projects/dely/dely/delydlg.cpp(193) : error C3892: “p”: 不能给常量赋值)

 

那如果限定指针不能改变,应该如何使用const?

int* const p = &limit;   // 这条语句也错了,


原因:p的意思,p是一个常量指针,p是指向int型。如果把地址&limit【存放const int型变量】赋值给他,类型不匹配,报错。。

要如何修改,方法有二:

            1: 将limit 定义为int型,如:
                    int limit   = 10;   
                     int* const p = &limit;

            2:limit不变,将p定义为指向const int型的指针,const int* const p = &limit;


我们按照第一条修改,这个时候 使用p = &i;这条赋值语句就不合法了,因为我们限定了p为只读的。。。

而 *p = 27 是正确的,哈哈这下明白了吧

--------简便方法-----

其实呢,我们可以吧const 放在想要限定的符号的后面,学习起来就简单多了,例如

const int limit = 10;等效于 int const limit = 10 // const 限定limit为int常量,

const int* p 等效于 int const * p                            // const 限定指向*p的为常量,p 可以改变;

int* const p                                                           // const 限定指向int的指针为只读,*p 可以改变;

 

原文地址:http://hi.baidu.com/cai_song/blog/item/63fb72ab641879f5faed5047.html

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值