4.关键字volatile?
- volatile 可以保证对特殊地址的稳定访问(变量地址),
- 到地址去读取
- 告诉编译器不要优化
- 用处 :中断服务程序中修改的变量;全局变量;多任务环境下各任务间共享的标志。
5,关键字inline?
- inline 是C++引入的关键字
- inline 只适合涵数体内代码简单的涵数使用(switch while for)
- inline 是一种"用于实现的关键字"
- 内联是以代码膨胀(复制)为代价
- 如果函数体内出现循环,那么执行函数体内代码的时间要比函数调用的开销大,( 不能有switch while )
- inline 只适合涵数体内代码简单的涵数使用
6.信号量,互斥量的区别?
信号量可以存储多个值012345,非负整数;
- 信号量例子
比如一个教室,里面10个座位,那么信号量就是10,进去了10个人(10个任务获取了10次信号量),信号量变成0,这个时候要进去(获取)就进不去了,需要等待(或试图等待),当有人从教室出来(释放信号量),信号量+1,等待的人(任务)就可以进去(获取)了。
互斥量只能存在1和0;
- 互斥量例子
一个打印机,每次都只能一个人(任务)使用(访问),那么这个情况下就使用互斥量,当有人在用的时候(互斥量为0),别人就不能用了,当用完之后(互斥量为1),在等待的人就可以去用了
状态
- 创建
- 释放
- 获取
- 等待(死等,等多长时间)
- 销毁
- 作用在变量上,变量存储在静态区,变量作用域只在本文件中
- 全局变量(作用域从开始定义到文件结束)
- 局部变量,函数执行完不会释放,下次依然可以使用
- 存储在.data或.bss区域
- 作用在函数,函数作用域只在本文件中(准确从定义之处开始,到文件结尾处结束)
char ,一个字节,8位数据,0000 0000,置0,或置1,0x00;
#include "stdio.h"
int main()
{
unsigned char c=0x07;
//c|=0x01<<2; // 置1
c&=~(0x01<<2); // 置0
printf("%xrn",c);
return 0;
}
- 置0
0x07==>0000 0111
需要与上1111 1011,才能保证其他位数不变,第三位置0
0x01==0000 0001;0x01
- 置1
0x03==0000 0011
或上 0000 0100,
0x01



