【C语言复习】第七篇、关于C语言关键字的知识

目录

第一部分、常见关键字

1、数据类型关键字

2、流程控制类关键字

第二部分、常用的关键字

1、typedef(类型重定义/类型重命名)

 2、static(易混淆const)

2.1、static修饰局部变量

 2.2、static修饰全局变量

 2.3、static修饰函数

第三部分、关于预处理指令的使用

1、#define定义常量

2、防止头文件被重复包含   

3、定义有参宏   

第四部分、友情链接


第一部分、常见关键字

        下表格中被颜色标记的,我个人认为是比较重要的,需要记住的。

        注意:include、define不是关键字,是预处理指令

1、数据类型关键字

        

基本数据类型

void:声明函数无返回值或参数,声明无类型指针,显式丢弃运算结果。

char:字符型数据类型
int:   整型数据类型

float:单精度浮点型数据(属于浮点数据的一种,小数点后保留6位)

double:双精度浮点型数据(属于浮点数据的一种,比 float 类型的精度高,小数点后保留15/16位)

类型修饰关键字

short:修饰 int,短整型数据,可省略被修饰的 int

long:  修饰 int,长整型数据,可省略被修饰的 int

signed:修饰整型数据,有符号数据类型

unsigned:修饰整型数据,无符号数据类型

复杂类型关键字

struct:结构体声明

union:共用体声明

enum:枚举声明

typedef:声明类型别名

sizeof:得到特定类型或特定类型变量所占字节的大小

存储级别关键字

auto:  指定为自动变量,由编译器自动分配及释放(通常在栈上分配)。

static:指定为静态变量,分配在静态变量区。修饰函数时,指定函数作用域为文件内部。

register:指定为寄存器变量,建议编译器将变量存储到寄存器中;也可以修饰函数形参,建议编译器通过寄存器而不是堆栈传递参数。

extern:  指定对应变量为外部变量,即在另外的目标文件中的定义,可以认为是约定由另外文件声明的。

const:  指定变量不可被当前线程/进程改变(但有可能被系统或其他线程/进程改变)。

volatile:指定变量的值有可能会被系统或其他线程/进程改变,强制编译器每次从内存中取得该变量的值。

2、流程控制类关键字

跳转结构

return:用在函数体中,返回特定值(或是 void 值,即不返回值)

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

break:跳出当前循环或 Switch 结构

goto:无条件跳转语句,常用在多层循环嵌套 

分支结构

if条件语句

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

switch开关语句(多重分支语句)

case:   开关语句中的分支标记

default开关语句中的 “ 其他 ” 分支(可选)

循环结构

forfor循环结构 。

dodo循环结构 do while() ; 

whilewhile循环结构 while()  ; 

第二部分、常用的关键字

1、typedef(类型重定义/类型重命名)

【C语言复习】第七篇、关于C语言关键字的知识_第1张图片

 2、static(易混淆const)

        首先要明白被const修饰的变量会变成常变量,该变量的值便不可以改变。参考博客:C语言中常量的知识。

        接着再来了解一下static,static可以用来修饰局部变量、修饰全局变量、修饰函数。

2.1、static修饰局部变量

        作用:使局部变量的效果和全局变量的效果等价(不管几个括号)。

示例1、没有用static修饰的局部变量

【C语言复习】第七篇、关于C语言关键字的知识_第2张图片

示例2、用static修饰的局部变量后的效果 

【C语言复习】第七篇、关于C语言关键字的知识_第3张图片

为什么会导致这种结果呢?????

         因为static修饰局部变量,改变了局部变量的生命周期,本质上是改变变量的存储类型。

        内存一般指计算机的RAM随机存储器,而计算机的内存一般分为栈区、堆区、静态区。

        栈区:主要用来存放局部变量,函数参数等相关临时变量。

        堆区:主要用来动态内存分配。

        静态区:主要用来存放全局变量,以及static修饰的局部变量。

【C语言复习】第七篇、关于C语言关键字的知识_第4张图片

 2.2、static修饰全局变量

        作用:使全局变量只能在当前源文件(.c文件)使用,不能借助extern在其它源文件(.c文件)使用。

Why???为啥就不行了呢?

        本质上原因:全局变量,在其他源文件内部可以被使用,是因为全局变量具有外部链接属性,但是被static修饰之后,就变成了内部链接属性,其他源文件就不能链接到这个静态的全局变量了!

        作用:解决不同源文件中全局变量名称重复的问题。

【C语言复习】第七篇、关于C语言关键字的知识_第5张图片

 2.3、static修饰函数

        作用:使得函数只能在当前源文件(.c文件)使用,不能借助extern在其它源文件(.c文件)使用。

Why???为啥就不行了呢?

        本质上原因:函数,在其他源文件内部可以被使用,是因为函数具有外部链接属性,但是被static修饰之后,就变成了内部链接属性,其他源文件就不能链接到这个静态的函数了!

        作用:解决不同源文件函数名一致的问题。

【C语言复习】第七篇、关于C语言关键字的知识_第6张图片

 第三部分、关于预处理指令的使用

        前面也说到了include、define不是关键字,是预处理指令

        关于include的使用,比较简单,用来调用头文件。关于define的详细用法如下:

     注意:利用define去进行宏定义的时候,不需要在后面加分号,加分号是错误的!!!

1、#define定义常量

#define MAX 25
#define MIN 0

2、防止头文件被重复包含   

#ifndef _LED_H_
#define _LED_H_
//头文件内容
//.......
//.......
#endif

3、定义有参宏   

#define ADD(X,Y) X+Y
#define SUB(X,Y) X-Y

第四部分、友情链接

        希望我的笔记对你有帮助,有需要的小伙伴可以查看本专栏更多的往期文章

        专栏链接: C语言的拾穗之旅_大屁桃的博客-CSDN博客

你可能感兴趣的:(C语言的拾穗之旅,c语言,开发语言)