深入解析C语言中Static关键字的作用与用法
详解C语言中的Static关键字

2022 年 01 月 18 日 15 时 29 分 47 秒进行了更新,作者是 build.code。
这篇文章主要向大家介绍了 C 语言里的 Static 关键字,它有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能给你带来帮助。
一、static关键字的基本含义
static 关键字意味着是静态的。它可以用来修饰局部变量、全局变量和函数,进而对它们的数据储存类型进行修改。
局部变量是在任意一个函数内部定义的变量(且不加 static),其初始值不确定,当函数结束时会自动销毁,并且存放在栈区。当使用 static 来修饰这个变量时,编译器会将其初始化为零,然后存储在静态区。在函数返回后,该变量的值保持不变,即使函数结束也不会被销毁,当下一次进入该函数时,它依然存在。其根本原因在于,static 修饰的局部变量是存储在静态区的。
普通全局变量定义于函数体外部,其存储空间在静态区分配,且编译器会自动对其进行初始化。整个工程都能看到普通全局变量,其他文件在使用关键字 extern 进行外部声明后,就可以直接使用它。静态全局变量仅在当前文件内可见,其他文件无法访问,其他文件也可以定义与静态全局变量同名的变量,二者互不影响。定义不需要与其他文件共享的全局变量时,加上 static 关键字。这样能有效降低程序模块之间的耦合。还能避免不同文件同名变量的冲突。并且不会被误使用。
函数:如果在函数的返回类型前加上 static,那么这个函数就是静态函数。例如:像 static int main()这样的。静态函数仅仅能够在声明它的文件中被看见,其他文件无法引用该函数。不同的文件可以使用名字相同的静态函数。而非静态函数能够在另一个文件中直接被引用。
二、static关键字的用法
使用普通局部变量时,例如图中的 int a 是一个局部变量,每次函数执行结束后它会自动被销毁,因此会打印出“6666666666”。
使用静态局部变量时,情况如下。static 修饰的局部变量,在超出局部范围后不会被销毁。当下一次进入函数时,它依然会存在。
2.如图 ,static声名的函数不能被另一个文件引用
三、static关键字的原理
局部变量通常存放在栈区,而被 static 修饰的局部变量则存放在静态区。当 static 修饰全局变量时,实际上改变的是变量的存储位置。所以,被 static 修饰的局部变量,除了作用域依然存在外,其生命周期并未结束。
如图为存储区示意图
总结
本篇文章到此结束啦。希望能对你有所帮助呢,也期望你能多多留意脚本之家的更多内容哦!