C++中的const限定修饰符

博客主要介绍了C/C++中const修饰符的用法。const可将对象转变为常数对象,变量值不可修改。对于指针,const也有不同作用,如const int *pi可修改指针指向的内存地址,但不能修改指向对象的值;const int *const pi则既不能修改指针指向的内存地址,也不能修改对象的值。
<p>const修饰符可以把对象转变成常数对象,什么意思呢? <br />  意思就是说利用const进行修饰的变量的值在程序的任意位置将不能再被修改,就如同常数一样使用!<br />  使用方法是:<font color="#0000ff"><br />const</font> <font color="blue">int</font> a=1;<font color="green">//这里定义了一个int类型的const常数变量a;</font> </p> <p>  但就于指针来说const仍然是起作用的,以下有两点要十分注意,因为下面的两个问题很容易混淆!我们来看一个如下的例子:</p> <p>#include iostream</font>&gt; <font color="blue"><br />using</font> <font color="blue">namespace</font> std; <font color="blue"><br />void</font> <font color="blue">main</font>(<font color="blue">void</font>) <br />{ <font color="blue"><br />const</font> <font color="blue">int</font> a=10; <font color="blue"><br />int</font> b=20; <font color="blue"><br />const</font> <font color="blue">int</font> *pi; <br />pi=&amp;a; <font color="maroon"><br />cout</font> pi=&amp;b; <font color="maroon"><br />cout</font> <br />cin</font>.get(); <br />}<br />  上面的代码中最重要的一句是 const int *pi <br />  这句从右向座读作:<font color="#ffffff">pi是一个指向int类型的,被定义成const的对象的指针</font>; <br />  这样的一种声明方式的作用是<b><font color="#ff0000">可以</font>修改</b>pi这个指针<b>所指向的内存地址</b>却<strong><font color="#ff0000">不能</font>修改指向对象的值</strong>;<br />  如果你在代码后加上*pi=10;这样的赋值操作是不被允许编译的!<br />  好,看了上面的两个例子你对const有了一个基本的认识了,那么我们接下来看一个很容易混淆的用法! <br />  请看如下的代码: <p>#include iostream</font>&gt; </p> <p><font color="blue">using</font> <font color="blue">namespace</font> std; </p> <p><font color="blue">void</font> <font color="blue">main</font>(<font color="blue">void</font>) <br />{ <br /><font color="blue">int</font> a=10; </p> <p><font color="blue">const</font> <font color="blue">int</font> *<font color="blue">const</font> pi=&amp;a; </p> <p><font color="maroon">cout</font> <br /><font color="maroon">cin</font>.get(); <br />}</p> <p> <p>  上面的代码中最重要的一句是 const int *const pi <br />  这句从右向座读作:<font color="#ffffff">pi是一个指向int类型对象的const指针</font>; </p> <p>  这样的一种声明方式的作用是你<b>既<font color="#ff0000">不可以</font>修改pi所指向对象的内存地址</b>也<b><font color="#ff0000">不能</font>利用指针的解引用方式修改对象的值,也就是用*pi=10这样的方式</b>; </p> <p>  所以你如果在最后加上*pi=20,想试图通过这样的方式修改对象a的值是不被允许编译的!</p> <p>  结合上面的两点所说,把代码修改成如下形式后就可以必然在程序的任意的地方修改对象a的值或者是指针pi的地址了,<b>下面的这种写法常被用语涵数的形式参数,这样可以保证对象不会在涵数内被改变值!</b> </p> <p> <p>#include iostream</font>&gt; <br /><font color="blue">using</font> <font color="blue">namespace</font> std; </p> <p><font color="blue">void</font> <font color="blue">main</font>(<font color="blue">void</font>) <br />{ <br /><font color="blue">const</font> <font color="blue">int</font> a=10;<font color="green">//这句和上面不同,请注意! </font> </p> <p><font color="blue">const</font> <font color="blue">int</font> *<font color="blue">const</font> pi=&amp;a; </p> <p><font color="maroon">cout</font> <br /><font color="maroon">cin</font>.get(); <br />}</p> <p></p>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值