c / c++ 中常用4个关键字辨析(const/static/extern/volatile)

关键字

1. const 关键字

c语言中:

  • 1.修饰变量 不能改变变量的值
  • 2.修饰指针
    • 3种方式:
      (1):const 在 * 号前,不能通过指针改变目标的值
      (2):const 在 * 号后,不允许改变指针指的值,即不能改变指针的指向
      (3):* 号前后都有cont 修饰时,既不能改变指针指向的值,也不能改变指针的指向

c++中:

除了有c语言中的用法,在类的用法:

  • 1.修饰变量 其值不能被修改 只能通过构造函数的初始化列表初始化
  • 2.修饰成员方法 不能通过该方法改变类对象(指修改对象的成员变量或调用非const方法)
  • 3.修饰对象(只读对象),不能修改对象

2. static 关键字

C语言中:

  • 1.修饰全局变量,改变其作用域,限定其只能在本文件中使用 - 2.修饰局部变量,改变其生命周期,直到程序结束才消失
  • 3.修饰函数,限定其不能被其他文件引用,只在本文件中使用

c++中:

除了C中的用法,还有,在类中的使用:

  • 1 static 成员变量,只能通过类名加作用域访问(::)
  • 2 static 成员方法 也属于是类的成员,通常通过类名加作用域访问符(::)来访问,也能通过对象来访问。

3.extern 关键字

c语言中:

  • 被extern 修饰的变量或者函数可被其他文件引用

c++:

  • 语言连接 声明 如:在c++中引用c文件的方法,就在c++中注明:extern “C” <调用的函数>

4.volatile 关键字

  • 易改变的
  • volatile总是与优化有关

不会在两个操作之间把volatile变量缓存在寄存器中。在多任务、中断、甚至setjmp环境下,变量可能被其他的程序改变,编译器自己无法知道,volatile就是告诉编译器这种情况。
一般说来,volatile用在如下的几个地方:
1、中断服务程序中修改的供其它程序检测的变量需要加volatile;
2、多任务环境下各任务间共享的标志应该加volatile;
3、存储器映射的硬件寄存器通常也要加volatile说明,因为每次对它的读写都可能由不同意义;
另外,以上这几种情况经常还要同时考虑数据的完整性(相互关联的几个标志读了一半被打断了重写),在1中可以通过关中断来实现,2中可以禁止任务调度,3中则只能依靠硬件的良好设计了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值