C语言中的关键字

Static

静态局部变量

在这里插入图片描述
结果:
在这里插入图片描述
a作为静态局部变量,第一次进入该函数的时候,进行第一次变量的初始化,在程序整个运行期间都不释放。(因为下一次调用还继续使用上次调用结束的数值)
但是其作用域为局部作用域,但定义它的函数或者语句块结束时,其作用域的也随之结束。

静态全局变量

修饰全局变量的时候,这个时候全局变量只在文件中访问,不能在其他的文件中访问,即便是extern外部声明也不可以。

关于变量:首先程序以及变量下载后都在flash中,程序运行的时候,必然才能从FLASH中出来到内存中的。

Volatile

就是告诉编译器,不要对变量的读取和存储去做优化。不加它,程序会运行的很快,不会与内存之间进行读写存储。
它是被设计用来修饰被不同线程访问和修改的变量。如果没有volatile,基本上会导致这样的结果:要么无法编写多线程程序,要么编译器失去大量优化的机会。

但是在是需要加的:
1.并行设备的硬件寄存器

在读写的时候,需要告诉这个变量是不稳定的,编译的时候不需要优化。(不需要优化的意思就是去特殊地址去访问它)。

2.中断服务程序中修改的供其它程序检测的变量,需要加volatile

当变量在触发中断中修改,而编译器判断主函数里面没有修改该变量,因此可能只执行一次从内存到寄存器的读操作,而后每次只会从该寄存器中读取变量副本,使得中断程序的操作被短路。

3.多任务环境下各个任务间共享的标志,应该加上volatile:

在本次线程内, 当读取一个变量时,编译器优化时有时会先把变量读取到一个寄存器中;以后,再取变量值时,就直接从寄存器中取值;当内存变量或寄存器变量在因别的线程等而改变了值,该寄存器的值不会相应改变,从而造成应用程序读取的值和实际的变量值不一致 。

Extern

有两个以上文件都需要使用共同的变量,我们将这些变量定义为全局变量。

Const

定义常量;防止数据改变。

宏 # 和## :

#:转换成一对双引号括起来的参数名字符串
如: #define PRINT(NAME) printf(#NAME)
PRINT(Hello word 1);
##:连接符,即把两个宏变量拼接到一起。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值