0.前言
- 本章主要整理关键字的使用。
- 何时用?怎么用?为什么用?
- 关键字:编译器预先定义了一定意义的字符串(32个),不依赖于操作系统或IDE软件。
1.杂项关键字及printf
//非关键字
printf//标准C语言中提供的库函数,依赖于操作系统或IDE软件
//杂项关键字
sizeof//编译器给我们查看内存空间容量的一个工具
return//返回的概念
2.数据类型关键字
- C语言操作对象:资源/内存(内存类型的资源,LCD缓存、LED等等)。
- 资源属性(大小)。
- 数据类型:用于限制内存大小的关键字。
//数据类型关键字;8bit=1B
//整形类型
char //硬件处理的最小单位,8bit,最大256;大多情况面向硬件开发使用
int //系统一个周期所能接受的最大处理单位,系统位数,可能是1B(8位机),2B(16位机),4B(32位机),8B(64位机)
long //特殊长度的限制符
short //特殊长度的限制符
//数据类型的限制标志;负数按补码计数,除符号位外,按位取反加1
unsigned//无符号数(数据),最高位是符号位
signed //有符号数(数字),默认,最高位是数
//浮点数
float //4B;1.0f是单精度
double //8B;1.0是双精度
//声明标志(占位标志,不能使用计算,语义符)
void
ASCII码表 8bit
2.自定义数据类型
//基本元素的集合
struct//元素之间的和,结构体(元素顺序有要求),常用关键字
struct myabc{
unsigned int wtcon;
unsigned int wtdat;
unsigned int wtcnt;
unsigned int wtclrint;
}
struct myabc mybuf;//使用自定义数据类型定义数据
//共用体(联合体),共用起始地址申请内存空间,技巧性代码
union
unionmyabc{
char a;
int b;
}
union myabc abc;//使用自定义数据类型定义数据
//枚举(enumerate),被命名的整形常数的集合,集合只占一个整形(不同于结构体)
//只用来表示内容是一个组合,便于程序员认识,无强制性
enum
#define MON 0
#define TUE 1
#define WED 2
//等同于
enum abc {MON = 0, TUE,WED };//abc可省略;=0可省略,依然表示0,TUE为1,依次...
enum 枚举名称{常量列表};
//数据类型的别名
typedef
typedef int a;
a x;//x是int型
3.逻辑结构
//if,else
if(表达式1)
{语句s;}
else if(表达式2)
{语句s;}
else if(表达式3)
{语句s;}
else
{语句s;}
//while
//先判断“表达式”是否成立,如果成立
//则执行{}里的语句,执行完再次判断“表达式”
//是否依然成立,成立则继续执行{},不成立则结束
while(表达式)
{
语句;
....;
}
//do while
//用法:先执行{}里的语句,执行完后,判断
//"表达式"是否成立,如成立,继续执行{};
//如不成立,则结束循环
do{
语句1;
...;
}while(表达式);
//switch ,case,default
//运用场景:多分支,但是每种分支只运行一次
switch(整型)
{
case 1:break;
case 2:
default:
}
//do,while, for
//while,do while,for 三个循环结构几乎在程序中可以实现替换
//所以我们判断在什么情况运用什么循环结构
//很少使用
for:次数
当出现计数循环时,首先想到for
while:条件
当出现条件判断循环时,首先想到while
continue,break,goto
continue:跳出本次循环
break:跳出循环体
goto:运用于在同一函数内部跳转//很少使用,一般仅在函数内部跳转
4.类型修饰符
类型修饰符的类型,是数据类型的类型,即C语言用来限制数据在内存中大小的类型。
类型修饰符用来描述数据类型在内存空间中的位置,用在数据类型前。
auto
//定义:限制变量定义在栈空间上的修饰符
//在定义一个变量后,默认变量分配的内存可读可写的区域,即auto可省略
//即:
int a;
//相当于
auto int a;
//区域如果在{}里面,默认数据存储在栈空间。
register
//定义:限制变量定义在寄存器上的修饰符
//特点:
//1.定义一些快速访问的变量。
//2.编译器会尽量的安排CPU的寄存器去存放这个变量,如果寄存器空间不足,变量还是存储在存储器中。
//3.不能取变量地址。
static
//定义:静态变量
//应用场景:static修饰的局部变量存放在全局数据区的静态变量区。
//static修饰的局部变量如未初始化会自动初始化为0;延长了局部变量的生命周期,
//直到程序运行结束以后才释放。 同时,离开定义它的函数后不能使用,
//但如再次调用定义它的函数时,它又可继续使用, 而且保存了前次被调用后留下的值。
//修饰3种数据:
//1.函数内部变量
int fun()
{
int a;====>static int a;
}
//2.修饰函数外部变量
int a;====>static int a;
int fun()
{
}
//3.函数的修饰符
int fun() ===>static int fun()
const
//应用:定义只读的变量
//本意是为定义只能读不能改写的变量,但是还是可以通过特殊方法进行改写
extern
//外部声明
volatile
//不是描述数据类型在内存空间中存放位置的修饰符
//定义:告知编译器编译方法的关键字,不优化编译
//修饰变量的值的修改,不仅仅可以通过软件修改,还可以通过硬件修改,等其他方式修改。
volatile int a=1;//当键入时,a=0.
if(a==0)
{
}
//优化编译时,检测a在软件中不修改,则不进行取a地址操作,直接进入if判断。
参考资料链接: 嵌入式C语言