第三章:const修饰符

来源:互联网 发布:放置江湖武功数据图 编辑:程序博客网 时间:2024/05/04 20:48

1.一个常量一旦被定义了,我们就不能改变它。比如 const double pi=3.14.那么接下来任何试图改变pi的语句都将被视为违法的。

2.那么这样的操作可以吗?把一个常量的地址赋给一个指针呢?如:

     const double minWage=9.60;

     double *ptr+=1.40;

     不行。这又是违法的。任何一个试图将一个非const对象的指针指向一个常量对象的动作都将引起编译错误。

3.这并不意味着我们不能间接地指向一个const对象,我们只需声明一个指向常量的指针来做这样的事。比如:

   const double minWage=9.60;

   const double *pc=0;//PC 是一个指向常量的指针,注意写法,const在前门

   pc=&minWage;//让pc指向minWage的地址。

   doubledval=3.14;

   pc=&dval;//这也是可以的,让pc指向另一个地址,虽然dval不是一个常量。

  dval=3.14159;//这也是正确的,因为dval本来就不是常量

 *pc=3.14159;这就是错了,因为我们在定义pc的时候定义它为指向常量的地址,所以它无法改变它所指向的对象。


通过上述例子,我们可以进行如下的一些总结:

const对象的地址只能赋给指向const对象的指针,但是指向const对象的指针可以被赋以一个非const对象的地址。

不要试图通过一个指向const对象的指针来间接改变它所指对象的值,这会引发错误。


4.在实际的程序中,指向const的指针常被用来作为函数的形式参数。它作为一个约束来保证,被传递给函数的实际对象在函数中不会被修改。例如:

int strcmp(const char*str1,const char*str2);


5.上述讲了一个指向const对象的指针,他的写法是const int*p的形式。下面来说说const指针。它的写法是 int *const p;

const指针可以指向一个const或者一个非const对象。如:int errNumb=0; int* const curErr=&errNumb;

这意味着,我们不能再把其他地址值赋给curErr,但是我们却可以修改curErr所指向的值。

例如:我们可以这样操作:*curErr=2;

但是我们不能这样操作:int num2=8;curErr=&num2;


6.最后一种指针被称为指向const对象的const指针,它是上面两种指针的结合。它的值(也就是地址)和它所指向的对象的值都不能发生改变。

如:const double pi=3.14159;const double *const pi_ptr=π//注意它的写法。

 

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 qq不能点赞了怎么办 快递发货地址写错了怎么办 订的海鲜不发货怎么办 拉人进群频繁了怎么办 qq群邀请过于频繁怎么办 qq一直被拉进群怎么办 qq号被冻结解封不了怎么办 2018qq自动进群怎么办 手机视频传到电脑倒着怎么办 qq群图片过期了怎么办 q号加不了群怎么办 q号加不了好友怎么办 q号被冻结了怎么办 qq群200人满了怎么办 畅聊之火消失了怎么办 手机版WPS打开文档空白怎么办 空白表格怎么打印不出来怎么办 微信朋友太少怎么办 js和CSS加载失败怎么办 熹妃q传密码忘了怎么办 苹果手机淘宝占用空间大怎么办 苹果相册储存空间不足怎么办 企业网银里的收款名单丢失怎么办 发邮件发错了怎么办 qq群成员满500了怎么办 为什么qq群查不到信息怎么办 tiger杯子油漆划掉了怎么办 手被油漆弄到了怎么办 被油漆弄到衣服怎么办 QQ发表情成问号怎么办 qq登不了微信怎么办 qq不能登录微信怎么办 qq号一年没用了怎么办 微信里别人可以看到我手机号怎么办 用手机号注册的微信换号后怎么办 微信群推送名片很多人加怎么办 志高制冷显示ff怎么办 百度账号手机号换了怎么办 别人盗取手机号的通讯录该怎么办 58简历看不到真实号码怎么办 淘宝更换手机号码说已注册怎么办