目录
[(二) 存储相关关键字](#(二) 存储相关关键字)
一、关键字
(一)数据类型相关的关键字
用于定义变量或者类型
类型 变量名;
char 、short、int 、long 、float、double、struct、union、enum 、signed、unsigned、void
1、char 字符型,用char 定义的变量是字符型变量,占1 个字节
char ch='c';正确
char ch1= '2'; 正确
char ch2 = '124' ; 错误的
2、short 短整型,用short 定义的变量是短整型变量,占2 个字节
short int a=12;
3、int 整型,用int 定义的变量是整型变量,在32 位系统下占4 个字节,在16 位系统下占2 个字节
int a=4;
4、long 长整型用long 定义的变量是长整型的,在32 位系统下占4 个字节
long int a=6;
5、float 单浮点型(实数),用float 定义的变量是单浮点型的实数,占4 个字节
float b=3.5f;
6、double 双浮点型(实数),用double 定义的变量是双浮点型的实数,占8 个字节
double b=2.8;
7、struct 是与结构体类型相关的关键字,可用它来定义结构体类型;
8、union是与共用体(联合体)相关的关键字;
9、enum 与枚举类型相关的关键字;
10、signed 有符号(正负)的意思
可在定义char 、整型(short 、int、long) 数据的时候会用signed 修饰,代表定义的数据是有符号的,可以保存正负数
例:
signed int a=2;
signed int b=-4;
注意:默认情况下signed 可以省略;
在定义char 、整型(short 、int、long) 数据的时候用unsigned 修饰,代表咱们定义的数据是无符号类型的数据
只能保存正数和0。
unsigned int a=11;
unsigned int a=-11; //错误
12、void 空类型的关键字
与char、int 、float 都可以定义变量不同,void 不能定义变量,没有void 类型的变量
void 是用来修饰函数的参数或者返回值,代表函数没有参数或没有返回值
例:
void fun(void){ }
代表fun 函数没有返回值,fun 函数没有参数
(二) 存储相关关键字
register、static、const、auto、extern
1、因为register 是寄存器的意思,所以用register 修饰的变量就是寄存器变量咯
即:在编译的时,让编译器知道这个变量是寄存器变量,是编译器尽量将存储空间分配在寄存器中。
注意:
(1)定义的变量不一定真的存放在寄存器中,他只是起到一个提醒的作用,尽量存放。
(2)至于为啥要将变量存到寄存器当中,主要是因为cpu 取数据的时在寄存器中比去内存中拿数据快
(3)为什么又只能让编译器尽量将变量存到寄存器,而不是直接放,这是因为寄存器比较宝贵,所以不能定义寄存器数组
(4)并且register 只能修饰字符型及整型的,不能修饰浮点型
register char ch;
register short int d;
register int a;
register float d;//错误的
(5):因为register 修饰的变量可能存放在寄存器中不存放在内存中,所以不能对寄存器变量取地址。因为只有存放在内存中的数据才有地址
register int a;
int *p;
p=&a;//错误的,a 可能没有地址
2、static 是静态的意思
static 可以修饰全局变量、局部变量、函数
3、const
const 是常量的意思
用const 修饰的变量是只读的,不能修改它的值
const int a=11;//在定义a 的时候用const 修饰,并赋初值为11,此后,就不能再给a 赋值了
a=111;//错误的
const 还可以修饰指针
4、auto int a;和int a 是等价的,auto 关键字现在基本不用
5、extern 是外部的意思,一般用于函数和全局变量的声明,这个在后面的课程中,会用到
(三)控制语句相关的关键字
if 、else 、break、continue、for 、while、do、switch casegoto、default
(四)其他关键字
sizeof、typedef、volatile
1、sizeof
使用来测变量、数组的占用存储空间的大小(字节数)
例3:
int a=10;
int num;
num=sizeof(a);
2、typedef 重命名相关的关键字
作用是给一个已有的类型,重新起个类型名,并没有创造一个新的类型
INT16 a;
INT32 b;
typedef 起别名的方法:
- 用想起名的类型定义一个变量
- unsigned int a;
- 用新的类型名替代变量名
- unsigned int INT16;
- 在最前面加typedef
- typedef unsigned int INT16;
- 就可以用新的类型名定义变量了
- INT16 b;和unsigned intb;//效果一样
3、volatile 易改变的意思
用volatile 定义的变量,是易改变的,即告诉cpu 每次用volatile 变量的时候,重新去内存中取
最新的值,而不是寄存器中的备份。
volatile 关键字现在较少适用
volatile int a=5;