什么是C语言关键字?
C语言的关键字其实就是一些特定的英文单词,在C语言中提供特定的功能,能够被C语言编译器作出特殊识别和解释的单词。
一共有多少个关键字
C语言的关键字一共有32个,其中数据类型相关的关键字有12个,和控制语句相关的关键字有12个,和变量存储类别相关的关键字有5个,其他功能关键字3个。作为一个C的工程师来讲,要求烂熟于心,对于每一个关键字都能熟练使用并理解其含义。
32个关键字罗列如下:
数据类型关键字(12个)
> char, short, int, long, float, double,
> unsigned, signed, struct, union, enum, void
控制语句关键字(12个)
> if, else, switch, case, default, for, do, while, break, continue, goto, return,
存储类关键字(5个)
> auto, extern, register, static,const
其他关键字(3个)
> sizeof,typedef,volatile
每个关键字有什么样的作用?
数据类型关键字(12个)
在程序的世界中,承载一系列的信息的数字和字符都属于数据类型,但计算机需要一种方法来区别和使用这些不同的类型。具体的,C通过识别一些基本的数据类型做到这些。
char:字符型的关键字,用于修饰字符型的变量或数组,占1个字节,即8位。什么是字符型,a、b、c、d这样的就是字符,当然在C语言中要加单引号修饰。
short:短整型的关键字,用于修饰短整型的变量,如果定义这样的一个变量只能存整数。100,67,99,-43这样的整数。占2个字节的存储空间。
int:整型关键字,用于修饰整型变量,比short要空间大一倍,4个字节。
long:长整型关键字,用于修饰长整型变量,32平台上也是4个字节,64位机上占8个字节。
float:单浮点型关键字,使用该关键字定义的变量用于存放带小数点的实数。占4个字节的内存空间。
double:双浮点型关键字,使用该关键字定义的变量用于存放带小数点的实数。占8个字节的内存空间。
unsigned:无符号型关键字,定义变量时,可以是带符号的,也可以是不带符号的。在int前加unsigned说明该变量是无符号的,只能存储0和正整数。
signed:有符号型关键字,定义变量时,可以是带符号的,也可以是不带符号的。如果在数据类型前不加符号修饰,默认为signed
struct:是与结构体类型相关的关键字,可以用它来定义结构体类型,是构造或者说自定义的数据类型所使用关键字
union:这个关键字是与共用体(联合体)相关的关键字,是构造或者说自定义的数据类型所使用关键字
enum:与枚举类型相关的关键字,是构造或者说自定义的数据类型所使用关键字
void:空类型,前面的关键字都可以用于定义变量,void关键字不可定义变量,常用于修饰函数的形参和返回值,意思是无参、无返回值,后面会有详细说明。
控制语句关键字(12个)
条件语句
(1)if: 条件语句
(2)else :条件语句否定分支(与 if 连用)
(3)goto:无条件跳转语句循环语句
(1) for:一种循环语句(可意会不可言传)
(2) do :循环语句的循环体
(3) while :循环语句的循环条件
(4) break:跳出当前循环
(5) continue:跳出本次循环,继续执行下次循环选择分支语句
(1)switch :用于选择语句
(2)case:选择语句分支
(3)default:选择语句中的“其他”分支选择分支语句
(1)return :子程序返回语句
存储类关键字(5个)
auto:自动类型的,基本不使用,在定义局部变量时,默认就是自动类型的。
extern:外部声明时使用的,C语言的程序不是一个c文件就能搞定的,要分文件,分文件时就要用到extern关键字
register:寄存器变量,register int a,告知编译器在定义a时尽量放在寄存器中,是尽量并不是一定!cpu如果能直接从寄存器中读取数据,速度会非常的快。( CPU计算时,先预先把要用的数据从硬盘读到内存,然后再把即将要用的数据读到寄存器。最理想的情况就是CPU所有的数据都能从寄存器里读到,这样读写速度就快,如果寄存器里没有要用的数据,就要从内存甚至硬盘里面读,那样读写数据占的时间就比CPU运算的时间还多的多。)
static:静态修饰,能修饰静态变量也能修饰函数,具体有什么样的作用,我们后边的时候会给大家详细的讲解。
const:修饰只读变量的,定义const int a = 10; a=11;是不行的,因为加了const修饰。
其他关键字(3个)
sizeof:测一个变量或者数据类型的大小。
typedef:重命名,为一个复杂的声明重命名为简单的别名,如unsigned short int a=10;再定义一个b,还要再写一遍,但是有了typedef可以这样,typedef unsigned short int U16;
volatile:易变的变量,告知编译器这是一个易改变的变量,特别是后面在线程中多个线程访问易变的变量时,为了防止其他任务改变,一定要去内存中重新读取该数据,不允许使用寄存器中的缓存值。很少能够用到。