在C语言中,一共有32个关键字,这些关键字我们可以将其非为两类:分别是数据类型关键字和流程控制类关键字。其中数据类关键字又可以分为A基本数据类型(5个)、B类型修饰关键字(4个)、C复杂类型关键字(5个)和D存储级别关键字(6个);而流程控制类关键字可以分为A跳转结构(4个)、B分级结构(5个)和C循环结构(3个),示意图如下所示:
下面分别对于这些关键字做一些具体的介绍:
目录
1. 数据类型关键字
1.1 A基本数据类型
1.1.1 void
void用于在声明没有返回值或者没有参数的函数,在C语言和C++中,如果函数没有返回值,需要在声明函数的类型是void,如果没有该说明,那么程序会报错,同时void也可以声明无类型的指针,如果函数是无类型指针的话,就需要声明为void类型。
1.1.2 char
char用于定义字符型数据,是C语言中最为常见的几种数据类型之一,可以用来存储一个字符,char的大小为1个字节,即8bit,同时char也是整型数据的一种特殊形式,因为char类型实际存储的是一个整数而不是一个字符。、
1.1.3 int
C语言中int是“integer”的简写,用于定义整形数据,又被成为是“基本整型”,是C语言中最常见的关键字。int关键字的大小为4个字节,即32bit,int通常用来表示正整数、负整数和0,int类型变量的范围是-2^31~2^31-1。
1.1.4 float
float在C语言中表示的单精度浮点类型,属于浮点数类型,小数点保存后6位,一般系统用32位来存储一个单精度的浮点数,其中8位用于表示指数和符号,其余的24位用来表示有效数字位以及符号位。float的范围是-3.40E+38~+3.40E+38。
1.1.5 double
double在C语言中表示的双精度浮点类型,属于浮点数类型,相较于float的精度更高,可以精确到15到16位。一般系统用64位来存储一个双精度的浮点数,其中12位是符号位和指数位,其余的52位表示尾数位,其数值范围-1.7E+308~+1.7E+308。
1.2 B类型修饰关键字
1.2.1 short
short在C语言中表示短整型类型,short占2个字节,即16bit。short是short int的简写,可以省略修饰的int。在C语言中,short类型的变量的范围是-2^15~+2^15。
1.2.2 long
long在C语言中表示长整数类型,long占4个字节,即16bit,在32位编译系统long和int占用的内存是相同的。long是long int的简写,可以省略修饰的int。long类型的变量的范围是-2^31~+2^31-1。
1.2.3 signed
signed在C语言中表示的是有符号数据类型,用来修饰整形数据,signed表示带符号位的存储方式。在C语言中,如果没有特别指定,定义的变量默认为有符号位的,因此signed相较于unsigned来说使用较少。
1.2.4 unsigned
unsigned在C语言中表示的是无符号数据类型,用来修饰整形数据,unsigned表示无符号位的存储方式。无符号类型的仅仅可以表示位大于0的数据。如果一个表示中既有有符号数又有无符号数,那么带符号数会自动转换为无符号数。
1.3 C复杂类型关键字
1.3.1 struct
C语言中struct用于结构体声明。C语言中使用结构体来存放一组类型的不同的数据,结构体中可以声明变量、指针以及数组等,程序员可以使用结构体来封装一些属性。
1.3.2 union
union用于共用体声明,共用体又被称为联合体,共用体是一种类似于结构体的数据结构,允许在相同内存位置中存储不同的数据类型,但是需要强调的是共用体中在一个内存单元中某一个时刻只可以有一个确定的值。
1.3.3 enum
C语言中enum用于枚举声明,枚举是C语言中一种基本数据类型,可以方便在一些较大的数组中调用需要的数据,枚举是一个集合,结合中元素是一些命名的整数常量,一般是编译器自动分配,如果编译器自己定义的话是从0开始,如果是用户定义的话,那么则从定义的那个值开始依次向后增加。
1.3.4 typedef
typedef用于声明类型别名,便于程序员对于一些较长的变量进行使用,typedef可以用于的数据类型包括内部数据类型以及程序员自定义的数据类型。
1.3.5 sizeof
C语言中,sizeof用于得到特定的类型或者特定类型变量的大小。关键字sizeof以字节的形式获取操作数存储的大小,其中操作数可以是一个表达式、数据类型或者是变量。
1.4 D存储级别关键字
1.4.1 auto
在C语言中,auto用于指定为自动变量,由编译器自动分配和释放,通常在栈上分配。自动变量是最常用的变量,如果不专门声明static存储类别的话,那么都是动态分配存储空间的。
1.4.2 register
在C语言中,register指定为寄存器变量,register的作用是建议编译器将变量存储到寄存器里面使用,可以建议编译器使用寄存器而不是使用堆栈,使用register可以提高效率。
1.4.3 static
C语言中static指的是静态变量,与全局变量的存储方式不同,该变量分配在静态变量区,不会随着函数调用的结束而被清除。如果该函数再次被调用的话,那么它的值是上一次调用结束后的值。
1.4.4 extern
extern用于指定变量为外部变量,即在另外的目标文件中定义,可以认定该变量是由另外文件所声明的。
1.4.5 const
在C语言中,关键字const是constant的缩写,关键字const与关键字volative合称为“cv特性”,如果一个变量被const所修饰,那么该变量将不能够改变。
1.4.6 volative
在C语言中,关键字volative与关键字const合称为“cv特性”,该关键字可以提醒编译器所定义的变量随时都可以发生改变,编译器可以直接从地址中读取数据。
2. 流程控制关键字
2.1 A跳转结构
2.1.1 return
return用在函数体中,用来表示返回特定的值(如果函数是void类型的话,则不返回值),同时return还有强制结束函数的作用,如果函数中执行了return语句,那么该函数后面的语句都将不会执行。
2.1.2 break
break语句用于跳出当前循环或者是switch结构。如果break是用在循环中可以用于终止循环,继续执行循环后的语句(如果是嵌套循环,则break用于跳出最内层循环);而在switch结构中,break用于跳出当前的case结束switch语句。
2.1.3 continue
在C语言中,continue语言用于结束当前循环,开始下一个循环。需要说明的是continue只是跳出当前这一次循环,如果这一个循环不是最后一次循环的话并不会跳出整个循环。
2.1.4 goto
C语言中goto表示的是无条件跳转语句,goto语句可以无视任何情况,执行goto语句后,程序会跳转执行指定的标识符后的语句,但是使用goto关键字的缺点是会使程序变得复杂,不易于维护。
2.2 B分支结构
2.2.1 if
在C语言中,if语句表示的是条件语句。当条件成立时,执行满足条件的内容,当条件不成立时候,则不执行该部门内容。
2.2.2 else
else语句表示的是条件语句否定分支。else语句,与if语句连用,当if语句的条件不成立时,则执行else语句;同时else也可以与if语句组成else if语句,表示如果if的判断没有通过,那么进行下面的else if语句,如果else if语句满足条件,则执行当前语句,如果不满足,则不会执行。
2.2.3 switch
switch用于多重分支语句。switch可以满足在实际问题中的多分支问题,如果嵌套的if和else较多会降低可读性,可以直接使用switch进行多分支选择。
2.2.4 default
在C语言中,default相当于多重分支语句中的“其他”,如果switch语句中包含default语句,那么如果前面的case均不满足条件,则会执行default语句。
2.3 C循环结构
2.3.1 for
在C语言中,关键字for用于for循环,for循环的形式是for(表达式1;表达式2;表达式3),如果表达1和表达式2均满足条件,则执行for循环中的内嵌语句再执行表达式3。
2.3.2 while
在C语言中,关键字while用于while循环和do-while循环中。在while循环中,如果while(表达式),如果while中的表达式满足条件,则执行while循环中的内嵌语句再验证下一次循环条件。
2.3.3 do
在C语言中,关键字do与关键字while配合起来构成do-while循环。在do-while循环中,先执行do-while的内嵌语句,在对于条件进行验证,do-while循环中最少执行一次。