C语言提供了丰富的关键字,这些关键字是语言本身就提前设定好的,用户是不能自己创造关键字的,关键字不能被用来当作变量名
基本数据类型:char int short long long long float double
与类型相关,修饰类型的:signed(有符号) unsigned(无符号) static(静态的)const (常) void(空) enum(枚举类型)struct(结构体) union(联合体类型)sizeof:计算所占内存大小 register:寄存器 typedef定义一个类型
auto:是修饰类型的一个关键字,例如我们创建一个局部变量时 int a=0;它只能在它的作用域内起作用,出作用域即销毁。其实int的前面隐藏了一个 auto即自动销毁功能,大多数时候被隐藏起来了。
分支、循环结构:if else switch case default for while do
break:用来打破循环(只能跳出最近的一层),也可以用在switch-case语句中用来切断后续的case,防止得到一连串后续结果。
continue:跳出本次循环后续代码,然后回到循环判断的位置
extern:用来声明外部符号
goto:跳到某一个位置
return:用于函数中返回某个值,只能返回一个,返回一个后其它的就失效了
下面具体介绍几个。
register-寄存器
首先,在计算机上,我们的数据都可以存储在哪里?
寄存器(字节)--高速缓存(xxxMB)--内存(8G、16G)--硬盘 (网盘,在云服务器上)
从右向左速度下降,价格变低
CPU(中央处理器)从寄存器中取走数据然后处理,同时高速缓存的数据往寄存器中移动,提升计算机整体的运行效率。
如果频繁的用到a=10这个数据,可加register修饰 提高效率。不过由于编译器的不断升级,编译器会经过分析后自动将某些代码送到编译器中。
typedef-类型重命名
顾名思义是类型定义,这里应该理解为类型重命名
对于某一个类型,我们可能会多次使用,可使用typedef重命名将它缩短
static-静态
1、修饰局部变量
在test函数中创建局部变量a,a++变为1后打印,然后出test函数a销毁
加入static修饰后,将局部变量a放入静态区,此后每次调用test函数,取出的都是其中的a,调用十次,a自增到10,static改变了的局部变量a的生命周期。
内存中具体有以下几个区
栈区
可以存放临时的变量 如局部变量、函数调用的参数(进入作用域创建,出即释放)
堆区
malloc、calloc、realloc、free用来进行动态内存分配的
静态区
存放静态变量、全局变量(放在静态区的数据,直到程序结束时才会销毁,空间才会释放)
被static修饰的局部变量改变了存储位置,然后使其延长了生命周期,但不会改变作用域。
2、修饰全局变量
全局变量本身是具有外部链接属性的,在A文件中定义的,在B文件中只需要用extern进行外部声明即可使用。但是如果全局变量被static修饰,这个外部链接属性就变成了内部链接属性,只能在其所在的源文件使用,不能跨文件。(全局变量作用域变小)
3、修饰函数
函数本身是具有外部链接属性的,被static修饰后变为内部链接属性,使得这个函数只能在其所在的源文件内部使用,其他源文件不能使用。 作用域变小,与全局变量相似。