关键字
sizeof
在不同的编译器或者系统中,int a; sizeof(a)的值是不一样的;
数据类型关键字 -- 内存限制的符号
C语言操作的对象:资源/内存(内存类型的资源,LCD缓存,LED灯)
C语言如何描述这些资源的属性?
大小(数据类型关键字是限制内存大小的一组特殊的关键字)
char
硬件芯片操作的最小单位: bit比特 0 1 软件操作的最小单位: byte拜特 8bit=1B 将最小的操作单位集合起来进行操作,同时也可以避免对硬件直接进行操作 应用场景: 硬件处理的最小单位 ASCII码 面向硬件
int
int大小: 根据编译器来决定 编译器最优处理大小: CPU的数据总线的最大容量,系统一个周期所能接收的最大处理单位:int 32bit 4B int 16bit 2B int 应用场景: 对数字的处理
long,short
特殊长度的限制符:
unsigned,signed
无符号:数据 有符号:数字(运算) 区别:所对应的内存的最高位,它看作符号位还是数据位
float,double
浮点数在内存中的表现形式与整型完全不同 float 4B double 8B
void
void a;占位 并没有申请空间,只是声明了一个变量名 a
自定义数据类型
C语言编译器默认定义的内存分配不符合实际资源的形式
struct结构体
struct myabc{ //自定义了一个名字为myabc的结构体变量,并没有声明变量 unsigned int a; unsigned int b; unsigned int c; unsigned int d; }; struct myabc mmm;//声明
uoion共用体
在同一个起始地址,来各自申请空间 union myabc{ char a; int b; }; union myabc mmm; 应用场景: 技巧型代码
enum
enumerate 一一列举 作用与#define一致,但可以更好的描述一种常量的集合 一堆整型常量的集合 enum 枚举名称{常量列表}; enum abc{MOD=0;TUE;WED};//定义enum数据类型,abc的数据类型的取值限制在括号中的内容(方便人识别交流) //可自定义数据的取值,也可以规定第一个,之后++ enum abc a1=MOD;//声明变量a1,变量a1的取值范围在MOD TUE WED三个常量中 //可以将a1看作一个变量,其内存大小为int型内存大小 //依据编译器的实际情况,有些a1可以取属于int类型的其他数据 a1=800;
typedef 别名
提高可读性 xxx_t:别名的命名 int a;//a是一个int类型的变量 typedef int a_t;//a是一个int类型的别名 a_t mysize;//==int mysize;
逻辑结构关键字
if else 条件
switch case default多分支
switch(整型变量/char)
do while for循环
for:次数 while:条件 do
continue break goto 控制符
类修饰符关键字
资源的大小限定:数据类型
资源的位置限定:类修饰符 -- 可读可写等
auto
默认情况下 分配的内存可读可写 该区域的定义如果在{}中,则分配的是栈空间
register
int a; register int a;//变量定义在寄存器上 当变量a使用超级频繁时,定义一些快速访问的变量0 编译器会尽量的安排CPU的寄存器区存放变量a,如果寄存器空间不足,a还是存放在内存中 寄存器的地址名称:R1,R2.... -->“&”符号对register不起作用
static 静态
static定义的变量,内存不会被自动清楚,也就是说赋值之后只能手动清零 修饰三种数据 1.函数内部的变量 2.函数外部的变量 3.函数的修饰符-》静态函数
extern 外部声明
const常量的定义
不能更改的量--》只读的变量
volatile
告诉编译器编译方法的关键字,不优化编译 修饰变量值的修改,不仅仅可以通过软件,也可以通过其他方式(硬件外部的用户) 与硬件关系较大