嵌入式Linux C(十一)——关键字

关键字

1. register关键字

寄存器变量
使用:只能修饰局部变量,不能修饰函数
寄存器变量:有可能保存在CPU的寄存器,省去CPU从内存中获取数据的时间,从而提高运行效率
使用场景:频繁被访问的变量,用register修饰可以起到优化程序运行效率的效果
使用注意事项:1.不能通过&来获取register修饰变量的地址 2.register修饰的变量类型一定是CPU所需处理的类型;


CPU:
运算器、控制器、存储器(寄存器)

volatile关键字

异变的
使用场景:修饰全局变量

volatile int count = 5;//防止编译器优化   
while(i == 5)
{
    printf("asasx");
}

2. static关键字

既能修饰局部变量,也能修饰全局变量,还能修饰函数
只执行一次
修饰局部变量:延长局部变量的生命周期,直至整个程序结束之后再释放
修饰全局变量:限定作用域,只能在本文件访问,不能再其他文件访问
修饰函数:与全局变量一样,限定作用域,只能在本文件访问,不能再其他文件访问
static修饰的函数一定要放在最前面(???)

//static使用场景
局部变量场景:替代全局变量(全局变量为先)
全局变量和函数:多人协作时,防止命名冲突(全局变量名、函数名)(自己用的函数,一定加上static)


3. const关键字

不修饰函数
const:修饰变量(局部、全局)
const:修饰变量,只读变量
const:距离谁近,谁就不能变
const使用场景:修饰函数的形参,提供安全访问的接口函数,防止函数实现过程中修改实参变量的值

const int num = 5
//对应的内存空间是可变的,但是不能通过变量名来修改
 int const*p = &count;  //不能通过p来修改p指向的内存空间
 int * const p = &count; //不能通过p来修改p指向的内存空间
const int *p = &count;   //不能通过p来修改p对应的内存空间
const int const *p = &count;   //不能通过p来修改p指向的内存空间和对应的内存空间

4. extern关键字

在当前文件中访问其他文件定义的全局变量或者函数:extern 外部声明

5. typedef关键字

typedef:给数据类型命名
作用:提高代码的移植性,可读性,编写效率
置换函数指针

typedef int (*P_FUNC)(int,int);

int add(int a,int b)
{
	return a+b;
}
int (*p_func)(int,int) = add;//
//P_FUNC p_func = add

//typedef VS define
1. define不能定义复杂得类型(函数指针变量)typedef可以
2. #define预处理阶段做傻瓜式替换,存在风险(不做语法检查),不安全

//#define VS const
定义常量:define更好

6. inline关键字

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

周末不下雨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值