二、关键字
关键字就是C语言已经定义好的名字,直接可以拿过来使用,不需要再次定义
2.1 数据类型相关的关键字
用于定义变量或者类型
类型 变量名;
拓展:变量名属于标识符,标识符有命名规则
标识符的命名规则:
标识符只能以数字、字母、下划线命名
首字母不能是数字
不能与关键字相同
char、short、int、long、float、double、struct、union、enum、signed、unsigned、void
1.char 字符型,用char定义的变量是字符型变量,占1个字节
char ch='a'; =为赋值号
有符号:-2^7~2^7-1
无符号:0~2^8-1
例:
char ch1='a'; 正确
char ch2='abcd'; 错误(有多个称之为字符串,需要用双引号修饰,定义的是字符类型的变量,没有办法保存字符串)
2.short 短整型,使用short定义的变量是短整型变量,占2个字节
有符号:-2^15~2^15-1
无符号:0~2^16-1
例:
short int a=11;
3.int 整型,用int定义的变量是整型变量,在32位以上系统下占4个字节
有符号:-2^31~2^31-1
无符号:0~2^32-1
例:
int a=44;
4.long 长整型 用long定义的变量是长整型,在32位系统下占4个字节,在64位系统下站8个字节。
long int a=66;
5.float 单浮点型(实数),用float定义的变量是单浮点型实数,占4个字节
例:
float a=3.8f;
6.double 双浮点型(实数),用double定义的变量是双浮点型的实数,占8个字节
例:
double a=3.8;
7.struct 这个关键字是与结构体类型相关的关键字,可以用它来定义结构体类型,以后讲结构体的时候再讲
8.union 这个关键字是与共用体(联合体)相关的关键字,以后再讲
9.enum 与枚举类型相关的关键字 以后再讲
10.signed 有符号(正负)的意思
在定义char、整型(short、int、long)数据的时候用 signed 修饰,代表咱们定义的数据是有符号的,可以保存正数,也可以保存负数
例:
signed int a=10;
signed int b=-10;
注意:在默认情况下signed可以省略 即int a=-10;//默认a就是有符号类型的数据
11.unsigned 无符号的意思
在定义 char 、整型(short 、int、long)数据的时候用 unsigned 修饰,代表咱们定义的数据是无符号类型的数据
无符号类型的变量只能保存正数和 0。
12.、void 空类型的关键字
char、int、float 都可以定义变量
void 不能定义变量,没有 void 类型的变量
void 是用来修饰函数的参数或者返回值,代表函数没有参数或没有返回值
例:
void fun(void)
{
}
代表 fun 函数没有返回值,fun 函数没有参数
测试数据类型所占内存大小
#include <stdio.h>
int main()
{
char a;
short b;
int c;
long d;
float e;
double f;
printf("%d\n",sizeof(a));
printf("%d\n",sizeof(b));
printf("%d\n",sizeof(c));
printf("%d\n",sizeof(d));
printf("%d\n",sizeof(e));
printf("%d\n",sizeof(f));
return 0;
}
运行结果:
2.2 存储相关关键字
register、static、const、auto、extern
1、register
是 寄存器的意思,用 register 修饰的变量是寄存器变量,即:在编译的时候告诉编译器这个变量是寄存器变量,尽量将其存储空间分配在寄存器中注意:
(1):定义的变量不一定真的存放在寄存器中。
(2):cpu取数据的时候去寄存器中拿数据比去内存中拿数据要快
(3):因为寄存器比较宝贵,所以不能定义寄存器数组
(4):register 只能修饰 字符型及整型的,不能修饰浮点型
(5):因为register修饰的变量可能存放在寄存器中不存放在内存中,所以 不能对寄存器变量取地址。因为只有存放在内存中的数据才有地址
2.static
是静态的意思
static可以修饰全局变量、局部变量、函数
使用static修饰的变量,此变量保存在内存的静态区空间中
3.const
const是常量的意思
用const修饰的变量是只读的,不能修改它的值
例:
const int = 10;//在定义a的时候用const修饰,并赋初值为10
从此以后,就不能再给a赋值了
const可以修饰指针
4.auto
auto int a 和 int a 是等价的,auto关键字现在基本不用
5.extern
是外部的意思,一般用于函数和全局变量的声明
2.3 控制语句关键字
if else break continue for while do switch case goto default
条件控制语句:
if语句:if...else
switch: switch case default
循环控制语句:
for while do goto
辅助控制语句:
break continue
2.4 其他关键字
sizeof、typedef、volatile
1.sizeof
使用来测量变量,数组的占用存储空间的大小(字节数)
例:
int a=10;
int num=0;
num=sizeeof(a);
printf("%d\n",num);
2.typedef
重命名相关的关键字
unsigned short int a = 10;
U16关键字,作用是给一个已有类型,重新起个类型名,并没有创造一个新的类型
例如:
INT16 a;
U8 ch;
typedef起别名的方法:
1.用想起名的类型定义一个变量
short int a;
2.用新的类型名替代变量名
short int INT16;
3.在最前面加typedef
typedef short int INT16;
4.就可以用新的类型名定义变量了
INT16 b和short int b//是一个效果
3.volatile
用 volatile 定义的变量,是易改变的,即告诉 cpu,每次用 volatile 变量的时候,重新去内存中取保证用的是最新的值,而不是寄存器中的备份。volatile 关键字现在较少使用
volatile int a=10;