几个关键字的用法:
一、register:
1.用register修饰变量时,尽可能会将这个变量保存在CPU中的寄存器中,而不是通过内存寻址的方式来访问,是为了提高他的运行速率
2.register只能修饰整形和字符型,不能用来修饰浮点形。
3.局部静态变量不能用register来修饰。用register修饰的变量只能是局部变量,不能是全局变量。CPU的寄存器资源有限,因此不可能让一个变量一直占着CPU寄存器
二、_ramfunc
_ramfunc的意思就是把接下来的函数完全从FLASH复制到RAM里面执行,优点就是速度比在FLASH执行快多了,对实时性要求很高的操作有用。比如很多中断函数都会加_ramfunc ,但是RAM是有限的,所以不能把太多的函数都定义为_ramfunc
三、static
1.在函数体中,一个被声明为静态的变量,在这一函数被调用的过程中,维持其值不变(该变量放在静态变量区)
静态局部变量:局部变量添加了static修饰之后,该变量就成为了静态局部变量。我们知道局部变量在离开了被定义的函数后,就会被销毁,而当使用static修饰之后,它的作用域就一直到整个程序结束。因此,在这里static的作用就是限定生命周期。
2.在模块中,函数体外,一个被声明为静态的变量可以被模块内的所有函数访问,不能被模块外的其他函数访问,他是一个本地的全局变量。
3.在模块内一个被声明为静态的函数只能被这一模块内的其他函数访问。static的作用就是限定作用域
四、const
1.欲阻止一个变量被改变,可以使用const关键字,通常它需要初始化。
2.对指针来说,可以指定指针本身为const,也可以指定指针指向的数据为const或者同时指定为const
const int *test test是一个指向常整型数的指针
int *const test test是一个指向整型数的常指针
const int *const test test是一个指向常整型数的常指针
3.可以节省空间,避免不必要的内存分配
4.提高运行效率
5.在传参数的时候,用const修饰,防止在传参过程中参数被修改
五、extern
一般用来修饰全局变量,以扩大全局变量的使用域。
1.使得全局变量或者函数在其他文件中可以使用
2.告诉编译器,由extern声明的变量或者函数在其他文件中
六、volatile
用其修饰的变量,是易改变的,即告诉CPU每次用该变量的时候,重新去内存中取,保证用的是最新的值,而不是寄存器中备份。多用于嵌入式开发。举例:
1.并行设备的硬件寄存器(状态寄存器)
2.一个中断服务子程序中会访问到的非自动变量
3.多线程应用中被几个任务共享的变量。
注:资料来源于本文之前学习的笔记
本文详细介绍了C语言中的几个关键关键字的用法,包括`register`(优化变量存储位置)、`_ramfunc`(提升函数执行速度)、`static`(限制变量作用域和生命周期)、`const`(定义常量及指针)、`extern`(扩展全局变量使用域)和`volatile`(确保变量值的即时更新)。这些关键字在嵌入式开发和编程语言中有着重要的应用。
3074

被折叠的 条评论
为什么被折叠?



