常见关键字
auto break case char const continue default do double else enum extern float for goto if int register return short signed sizeof static struct switch typedef union unsigned void volatile while
其中static关键字较为重要,这里单独说一下
static关键字有三个作用1.修饰局部变量2、修饰全局变量3、修饰函数
1、修饰局部变量
首先看这样一串代码
#define _CRT_SECURE_NO_WARNINGS#include
上述代码输出结果如下
上述代码中局部变量a没有加上static,所以每次跳出循环,a的值又会变成a++的值是2,所以每次输出的值都是2
现在看看在局部变量a之前加上static,如下代码段
#define _CRT_SECURE_NO_WARNINGS#include
上述代码段输出结果如下
加入static关键字,每次输出的a的值都保留下来了,所以会在原有基础上++
2、修饰全局变量
首先在一个源文件定义一个全局变量
再在另一个源文件下输出这个全局变量
可以看见全局变量g_val可以正常输出。
现在,若是在定义全局变量的时候在加上static
然后继续在另一个源文件下输出这个全局变量
可以看见,出错了,用static定义的全局变量在另一个源文件下无法输出,这是因为static定义的全局变量只能在自己的内部的.c源文件中使用,但是在整个工程中不能使用,但是一般定义的全局变量可以在整个工程中使用。 全局变量,其他文件可以使用是因为全局变量具有外部连结性。但是static修饰了全局变量之后,就具有了内部连接属性,所以就不能在整个工程中使用了。
3、static修饰全局函数
首先在一个源文件下定义一个全局函数,如下
再在另一个源文件下调用这个函数,调用之后如下
可以看见,正常情况下定义的全局函数是可以在其他源文件下调用的
现在再在定义全局函数的时候加上static
再在其他源文件下调用,结果如下
调用出错,这是因为与static修饰全局变量类似,在全局函数加上static意思是将本来全局函数的外部连结性转变为了内部连接性,导致其不能在整个工程中使用了。