一.关键字typedef
typedef顾名思义是类型定义,这里应该理解为“类型重命名”比如
在我们编写函数的时候像“unsigned int”这样的前缀过于长,在输入的时候比较麻烦,我们可以在开始的标题前定义一下新的命名,在“typedef unsgned interesting uint”中“typedef”是关键字“unsigint”是原(旧)名字“uint”是定义后的新名字,在后续使用的时候是可以直接调用的,在这里null1与null2的类型是一样的。
二.static在C语言中的三大用法
1.局部变量
2.全局变量
3.函数
下面进行一一讲解
局部变量e未用static之前:下图函数是一个循环代码,可以看见在代码内部引用了“test()”外部函数,然而在外部函数中形成,一种判断
循环关系由图所示,当“i”在while中判断后,进入test完成计算,然而编程里面的编程代码是属于局部变量,在完成计算并打印输出后,局部变量的值就会销毁,使得“int b=1”如此循环往复进行打印,使得打印结果都是“2
局部变量使用static之后:
当在“int b=1”前面加入static后,在进一步进入循环,输出的结果“2.3.4.5.6.7.8.9.10.11”
问:为什么会出现这种情况?是由什么原因导致的?本质是什么?
答:是因为由于static对局部变量进行了修饰,导致局部变量出了作用域,没有进行销毁。在本质上,static修饰局部变量的时候改变了变量的储存位置,储存位置可以分为三种1.栈区2.堆区看3.静态区,原本局部变量未被static修饰之前,他的储存位置在栈区,在被static修饰之后储存空间变成了静态区,进一步影响了生命周期,
使得生命周期变长了,和程序的生命周期一样了,如下图
全局变量:
全局变量在未被static修饰之前,是具有链接性的,可以通过本篇代码链接到外部文件的“全局变量进行访问
这里的“local”就是全局变量。
当全局变量被static修饰后:
全局变量的链接性就会消失,上述程序就会报错,它的作用只会作用在当前链接,相当于把它的作用范围变小了,使得更加严密,数据不会随便被修改。
函数:
函数本来是有外部链接属性的,但是被static修饰后外部链接属性,就变成了内部链接属性,其他源文件(.c)就无法使用
上述文章介绍了关键字typedef以及static在c语言中的(局部变量,全局变量以及函数)三大用法,感谢大家观看,谢谢大家!!!