C语言提供了多个关键字,它具有以下性质:
1.不能自己创建
2.不能用关键字来命名变量
常见的共有以下32个关键字:
auto break case char const continue default do double
else enum extern float for goto if int long register
return short signed sizeof static struct switch typedef
union unsigned void volatile while
选择其中重点进行解释,其余用法相较单一,也容易理解。
1.auto 自动的,用来定义自动变量,格式为:auto 类型名 变量名;。
例如 auto int temp;。 在C语言中,如果没有指定变量的存储类型,那么变量的存储类型就缺省为auto,即上述定义一般写为:int temp;即可(C语言中变量共有四种存储类型:自动变量,静态变量,外部变量,存储器变量。)。而自动变量的自动就体现在:进入语句块时自动申请内存,而一旦出了语句块就会自动释放内存。
2.break 在循环和switch—case语句中,暂不详细讲解。
3.switch 常用于stitch—case语句中
4.char 字符类型
5.const 常变量,详解见:https://mp.csdn.net/mp_blog/creation/editor/126217073
6.continue 继续,常用于循环中,暂不详解
7.default 默认,常用于switch—case语句
8.do 常用于do—while循环
9.double 双精度
10.else 其它的,常用于if—else语句
11.enum 枚举,详解见https://mp.csdn.net/mp_blog/creation/editor/126217073
12.extern 用于声明外部符号
13.float 单精度
14.for 常用于for循环
15. goto goto语句
16.if 常用于选择语句,与else联用,组成if—else语句
17.int 整型
18.long 长整型
19.register 寄存器,用于声明寄存器变量,格式为:register 类型名 变量名;,例如
register int a; 。 计算机中的数据可以存放在以下五种地方:
名称 空间大小
寄存器 更小
高速缓存 几十 M
内存 几个G到几十个 G
硬盘 几百 G
网盘 几个T
特点:空间越小,造价越高,速度越快。所以我们可以将大量频繁使用的数据声明为存储器类型的变量,可以提高效率,而现代的编译器已经可以自动优化程序,将普通的变量自动转化为寄存器变量,故一般无需再使用register进行特别声明。
20.return 返回,常用于函数的末尾,用于返回该函数的最终运行结果。
21.short 短整型
22.signed 有符号的,详见:https://mp.csdn.net/mp_blog/creation/editor/126211677
23.sizeof 详见:https://mp.csdn.net/mp_blog/creation/editor/126211677
24.static 静态的,三种用法:①static修饰局部变量 ②static修饰全局变量 ③static修饰函数
在学习编程语言时,需要考虑的内存上的几个区:
存储的数据
栈区 局部变量,函数的参数
堆区 动态内存分配
静态区 全局变量,static修饰的静态变量 特点是生命周期较长
①static修饰局部变量 ,格式:static 类型名 变量名;。改变了局部变量的生命周期,本质上是改变了变量的存储类型。动态局部变量与程序块共存亡,一旦出了程序块,下次再使用时就需要重新申请空间,重新赋值;而静态局部变量与程序共存亡,只要程序没有跑完,就会保持上一次的值不变,下次使用时直接在上次变化的基础上进行使用,类似于"迭代"。
②static修饰全局变量 ,动态全局变量可以被程序的其它文件访问,只要使用关键字extern声明一下即可。而静态全局变量虽然可以在定义它的源文件(.c文件)内的任意地方被访问,但是不能被程序的其它文件访问。
本质原因是:全局变量在其它源文件内部可以被使用,是因为全局变量具有外部链接属性,但是被static修饰之后,就变成了内部链接属性,其它源文件就不能链接到这个静态的全局变量了。
③static修饰函数,使得函数只能在自己所在的源文件(.c文件)内部使用,不能在其它源文件内部使用,本质上是将函数的外部链接属性改为了内部链接属性,与static修饰全局变量一样。
25.struct 结构体
26.switch 常用于switch-case语句
27.typedef 类型重命名,用于为系统固有的或程序员自定义的数据类型定义一个别名,格式为:typedef 原数据类型 别名;。例如:typedef unsigned int u_int;。
28.union 联合体/共用体,暂不详解
29.unsigned 无符号的,详见:https://mp.csdn.net/mp_blog/creation/editor/126211677
30.void 空,暂不详解
31.volatile 暂不详解
32.while 常用于while循环
注意:define和include不是关键字,他们是预处理指令
本文仅对少数关键字进行了详解, 其余未详解关键字待我本人学习完之后会补上。
本文代码链接为:https://github.com/qigezongdui/C-