const 语法

const double *pc = 0; const double minWage = 9.60; // ok: 不能通过pc 修改minWage pc = &minWage; double dval = 3.14; // ok: 不能通过pc 修改dval // 虽然dval 本身不是一个常量 pc = &dval; // ok dval = 3.14159; // ok *pc = 3.14159; // 错误 const 对象的地址只能赋值给指向const 对象的指针例如pc 但是指向const 对象的 指针可以被赋以一个非const 对象的地址例如 pc = &dval; 虽然dval 不是常量但试图通过pc 修改它的值仍会导致编译错误因为在运行程序 的任意一点上编译器不能确定指针所指的实际对象 在实际的程序中指向const 的指针常被用作函数的形式参数它作为一个约定来保证 被传递给函数的实际对象在函数中不会被修改例如 // 在实际的程序中, 指向常量的指针 // 往往被用作函数参数 int strcmp( const char *str1, const char *str2 ); 在第7 章关于函数的讨论中我们会更多地讨论指向const 对象的指针 我们可以定义一个const 指针指向一个const 或一个非const 对象例如 int errNumb = 0; int *const curErr = &errNumb; curErr 是指向一个非const 对象的const 指针我们可以从右拄左把定义读作curErr是一个指向int 类型对象的const 指针这意味着不能赋给curErr 其他的地址值但可以修改curErr 指向的值 下面的代码说明我们可以怎样使用curErr do_something(); if ( *curErr ) { errorHandler(); *curErr = 0; // ok: 重置指针所指的对象 } 试图给const 指针赋值会在编译时刻被标记为错误 curErr = &myErrNumb; // 错误 指向const 对象的const 指针的定义就是将前面两种定义结合起来例如 const double pi = 3.14159; const double *const pi_ptr = π 在这种情况下pi_ptr 指向的对象的值以及它的地址本身都不能被改变
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值