你还记得C语言有多少个关键字吗?

随便唠几句

最近项目周期比较紧张,刚刚结束了一天如火如荼的工作,回到家里吃口饭,陪孩子玩了一会儿。现在终于可以坐下来写点东西了。没有成家之前,看到网络上常有人说,成年人没有容易二字,总觉得是某些成年人的故作姿态。然而现在,我却更能体会黄晓明在中国合伙人里面饰演的成东青所说的,跳在水里你不会淹死,待在水里你才会淹死,你只有游,不停的往前游。是的,背负家庭重担的成年人可不就得不停的往前游么!

今天总结下C语言的关键字吧,所谓基础不牢,地动山摇。C语言基础总结,从关键字开始!

02

关键字一览

C语言的关键字共有32个,如下所示:

auto             声明自动变量    

short            声明短整型变量或函数    

int                声明整型变量或函数    

long             声明长整型变量或函数    

float             声明浮点型变量或函数    

double         声明双精度变量或函数    

char             声明字符型变量或函数    

struct           声明结构体变量或函数    

union           声明共用数据类型    

enum           声明枚举类型    

typedef        用以给数据类型取别名    

const           声明只读变量    

unsigned     声明无符号类型变量或函数    

signed         声明有符号类型变量或函数    

extern          声明变量是在其他文件引用

register        声明寄存器变量    

static            声明静态变量    

volatile        说明变量在程序执行中可被隐含地改变   void    声明函数无返   回值或无参数,声明空类型指针    

if                  条件语句    

else              条件语句否定分支(与 if 连用)    

switch          用于开关语句    

case             开关语句分支    

for               一种循环语句    

do               循环语句的循环体    

while           循环语句的循环条件    

goto            无条件跳转语句    

continue     结束当前循环,开始下一轮循环    

break           跳出当前循环    

default        开关语句中的“其他”分支    

sizeof          计算数据类型长度    

return         子程序返回语句(可以带参数,也可不带参数)循环条件   

 

03

auto 

编译器在默认缺省的情况下,所有变量都是auto类型。就当它不存在即可。

04

register   ★

功能是请求编译器尽可能将变量存在CPU内部寄存器中而不是通过内存寻址访问。提高数据的处理效率。

05

static   ★★

1、修饰变量

 1)修饰局部变量

在函数体里面定义的,作用域只能在这个函数里。在函数中定义并初始化赋值,等到下次再进入到该函数,static 修饰的变量值不会再进行初始化赋值,而是用上一次该变量执行的结果再进行计算。

 2)修饰全局变量

静态全局变量,作用域仅限于变量被定义的文件。

static修饰的变量都存储在内存的静态存储区,即使相关的函数执行完了,这个静态变量还是不会被销毁。

2、修饰函数

函数前面夹static 使得函数成为静态函数。,此处的static不再指存储方式,而是说这个函数的作用域仅限于本文件。

06

sizeof  ★★★

常常有很多人将sizeof误认为是函数,实际上它是一个关键字。用来计算对象所占内存空间的大小。

07

signed、unsigned  ★★

有符号,无符号。

08

if、else  ★

条件判断语句。

09

switch、case  ★

状态分支

10

do、while、for  ★

循环语句

11

break与continue  ★★

break与continue的区别:

break:表示终止本层循环。

continue是跳出本次循环,也就是说只是跳出本次循环。下次仍然会进来执行。

12

goto

用于程序的跳转。一般情况下不常用。

13

void  ★

声明函数无返回值或无参数,声明空类型指针  

void 真正发挥的作用是 :

1、对函数返回值的限定;如果函数没有返回值,那么应该声明为void类型。

2、对函数参数的限定。如果函数没有参数,那么应该声明其参数为void类型。

3.1、void*:不能对void指针进行算法操作。如下所示是不合法的(ANSI):

void * pvoid ;

  pvoid++;        //ANSI : 错误    GNU :  正确

  pvoid += 1;    //ANSI : 错误    GNU : 正确

-------------------------------------------

  int * pint;

  pint++'//ANSI    正确

 在现实设计中,我们应该尽可能符合ANSI标准。

3.2 如果函数的参数可以是任意类型的指针,那么应声明其参数为 void*。

14

return  ★

用来终止一个函数并返回后面跟着的值。

15

const  ★★★

1、const 修饰只读变量,这个关键字我认为是一个难点。因为其修饰的变量是多变的。下面举几个例子:

修饰一般变量可以写成如下形式:

            int const  a = 2;   

或者     const  int a = 2;

2、修饰指针就比较有意思了:

const int *p   //p可变,p指向的对象不可变

int const *p   //p可变,p指向的对象不可变

int *const p   //不可变,p指向的对象可变

const int *const p  //指针p和p指向的对象都不变。

记忆和理解的方法是:先忽略类型名,观察const离哪个近就是修饰谁。

16

volatile ★★★

防止变量被优化。volatile 的英文意思是容易改变的,不稳定的。在变量前面申明是volatilel类型,就是在告诉编译器,这个变量是随时可能发生变化,不要把它优化。每次使用要从内存中获取。

例子如下:

进行优化的例子

   int   a  = 10;

   int    b  =  a;

   int    c   = a;

优化的结果是 不论a的值是否变化,b 始终都会等于10;

不进行优化的例子:

volatile  int  a  =  10;

              int  b  =  a;

              int  c  =  a;

这样volatile 关键字就会告诉编译器,每次b、c取值要从内存中取,

17

extern  ★★

声明为外部变量。最好在对应c文件的头文件声明为外部变量。不要extern在各个文件满天飞,容易造成混乱。降低可读性。

18

struct   ★★★

1、结构体类型,属于C语言数据类型中构造类型之一。结构体内的变量可以是基本类型的数据,也可以是数组,指针,函数指针等。

2、结构体指针是程序编写中常用的一种指针,通过使用结构体指针可以有效降低全局变量的使用频率,大大降低程序的耦合性。

3、定义结构体时候,结构体内的变量的声明顺序决定了结构体所占用的内存大小。

19

union ★★

共用体类型,属于c语言数据类型中构造类型之一。最大的特点就是共用体成员变量共用一块内存。关于共用体,我在单片机程序中用的最多的就是串口接收。这个后面可以单独写一篇。其他地方我很少用。

20

enum  ★★

1、首先使用枚举类型可以提高代码的可读性。

2、其次,枚举变量将被编译器作为一个整形变量对待,也就是说可以像使用整形变量一样使用枚举变量。并可以使用自增减运算符来迭代枚举变量。

3、然后,使用枚举类型,会将enum视为枚举类型并显示枚举常量的名(符号形式)而不是字面值。方便调试。

21

typedef  ★★

typedef 的意思是给一个已经存在的数据类型(注意是类型,不是变量),取一个别名。不是定义一个新的数据类型。

22

写在后面的话

本文根据自己对关键字的理解,参考网络上的资料进行了一次总结,对于我认为比较重要平时又容易被忽视的部分进行了较为详细的说明。其他常用的容易理解的就一笔带过,当然这并不代表他们就不重要。

希望看了这篇总结的小伙伴能够有所收获!

声明:本内容为作者独立观点,不代表电子星球立场。未经允许不得转载。授权事宜与稿件投诉,请联系:editor@netbroad.com
觉得内容不错的朋友,别忘了一键三连哦!
赞 2
收藏 3
关注 30
成为作者 赚取收益
全部留言
0/200
成为第一个和作者交流的人吧