初识常见关键字2
typedef
类型重定义
如:
我使用typedf重新定义unsigned int,可以使其输入变得更加简单
static
静态的
static的用法
1.static修饰局部变量
2.static修饰全局变量
3.static修饰函数
如:static修饰局部变量
结果是:2 2 2 2 2 2 2 2 2 2
首先i=0<10 ,进入while函数,进入后调用test(),当我们进入局部范围时创建整型a,a=1,然后a++,输出2,因为a是局部变量,所以当a出局部范围时,a销毁,所以当我们下一次再进入局部范围时a又=1,然后不停的循环10次,结果就出来了
当在int a前加上static时,结果又发生了变化
结果为2 3 4 5 6 7 8 9 10 11
当static修饰局部变量时,改变了局部变量的生命周期(本质上改变了变量的存储类型)
因为static改变了int a的生命周期(存储类型),使得a出了局部范围不销毁,可以在下一次继续使用,所以结果就变成上述结果
static修饰全局变量
如:
首先在外部定义一个全局变量,并用extern声明
即可使用,结果是2022
但当我们在全局变量前加上static时,情况就发生变化了 ,如图
这是因为static修饰全局变量,使得这个全局变量只能在自己所在的源文件内部使用,其他源文件不可再使用
全局变量,之所以在其他源文件内部可以被使用,是因为全局变量具有外部链接属性,但是被static修饰后,变成了内部连接属性,其他源文件自然就不能链接到这个静态的全局变量了
static修饰函数
(static修饰函数和修饰全局变量相思)如图
这是static未修饰函数add时的结果,当static修饰函数add后,如图
出现的问题和全局变量一样,即
static修饰函数,函数只能在自己所在的源文件内部使用,不能在其他源文件内部使用