在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
C语言程序可以看成由一系列外部对象构成,这些外部对象可能是变量或函数。而内部对象是指定义在函数内部的函数参数及变量。 外部变量定义在函数之外,因此可以在许多函数中使用。由于C语言不允许在一个函数中定义其它函数,因此函数本身只能是“外部的”。 由于C语言代码是以文件为单位来组织的,在一个源程序所有源文件中,一个外部变量或函数只能在某个文件中定义一次,而其它文件可以通过extern声明来访问它(定义外部变量或函数的源文件中也可以包含对该外部变量的extern声明)。 而static则可以限定变量或函数为静态存储: 如果用static限定外部变量与函数,则可以将该对象的作用域限定为被编译源文件的内部。通过static限定外部对象,可以达到隐藏外部对象的目的。因而,static限定的变量或函数不会和同一程序中其它文件中同名的相冲突。 如果用static限定内部变量,则该变量从程序一开始就拥有内存,不会随其所在函数的调用和退出而分配和消失。 C语言使用静态函数的好处:1. 静态函数会被自动分配在一个一直使用的存储区域,直到退出应用程序实例,避免了调用函数时压栈出栈,速度快很多。 2. 关键字“static”,翻译成中文就是“静态的”,所以内部函数又称为静态函数。但此处“static”的含义不是指存储方式,而是指对函数的作用域仅局限于本文件。使用内部函数的好处是:不同的人编写不同的函数时,不用担心自己定义的函数是否会与其它文件中的函数同名。因为这时同名了也没关系。 c语言中static的语义1.static变量:
2.static函数(也叫内部函数): 只能被本文件中的函数调用,而不能被同一程序其它文件中的函数调用。区别于一般的非静态函数(外部函数) int a ; main() { int b ; int c* = (int *)malloc(sizeof(int)); } a是全局变量,b是栈变量,c是堆变量。 static对全局变量的修饰,可以认为是限制了只能是本文件引用此变量。有的工程是由好多.c文件构成。彼此可以互相引用变量,但加入static修饰之后,只能被本文件中函数引用此变量。 通过上面的分析,我们不难得出以下结论: 1、 静态函数与普通函数的区别在于:静态函数不可以被同一源文件以外的函数调用。 2、 静态局部变量与普通局部变量的区别在于:静态局部变量只初始化一次,下一次初始化实际上是依然是上一次的变量; 3、 静态全局变量与普通全局变量的区别在于:静态全局变量的作用域仅限于所在的源文件。 |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论