陋室

斯是陋室,惟吾甚欣!
posts - 1, comments - 0, trackbacks - 0, articles - 0
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

Const的应用点滴

Posted on 2006-07-04 23:40 笨笨虎 阅读(125) 评论(0)  编辑 收藏 引用 所属分类: C++基础

c++中,const是一个不可或缺的非常有用的关键字,随处都可看见他的声影。可以从下面几个方面来看它的用法。
   通常的用法:
     
通常的用法就是声明一个常量,在程序中不能被修改。声明时必须赋值。如:

  const   int  ival  =   10 ;
 ival 
=  ival  +   1   //  错误,不能被赋值。

    const与指针

     有两种方式把const用于指针:

 1 让指针指向一个常量对象。
这种方式的主要意图是防止使用该指针来修改所指向的值。如下面的代码:

int  ival  =   10 ;
const   int   *  ip  =   & ival;
* ip  +=   1 //  错误
ival  +=   1 // 正确

也就是说 *ip 是一个常量,当然就不能被修改。但 ival 没被 const 修饰,就可以被修改。这里的 ip 表示的是 ival 在内存中的地址,也是可以修改的。

    还有一个问题就是,不能把 const 常量的地址赋值给常规指针。因为常规指针的值是可以被修改的,这样就会更改 const 常量的值,是编译器不允许的。
如下面


const   int  ival  =   10 ;
int   *  ip  =   & ival;  //  错误

但是,如果程序员非要这样用的话,也可用强制类型转换的 const_cast

const 常量的地址赋值给指向 const 的指针,这是可行的。因为两个值都是不允许修改的。

还有,一般不允许使用指向 const 的多级指针;不能把常量数组赋值给非常量指针,也就是说在函数中用非常量数组做参数时,不能把常量数组名赋值给它。

2.   将指针本身声明为常量。
 

int  ival  =   10 ;
int   *   const  ip  =   & ival;
这里的意思是变量ival的地址是不可更改的。
ip
++ // 错误


( 待续.........)


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理