点击蓝字 关注我们

关键字static

单从单词翻译出来的意思,我们可能都以为关键字static是很安静,但是呢它一点都不安静!

c语言中static关键字改变了(C语言开发中关键字static的经典剖析)(1)

作用1:修饰变量

修饰变量。变量有分为全局变量和局部变量但是如果他们都被static修饰了的话他们都在内存的静态区。

静态全局变量:作用域仅限于本文件中中,如果在其他文件及时使用extern声明也没变法使用该变量,换一个说法作用域是从定义的地方开始到文件结尾处结束,在定义之处前面的代码同样没办法使用它。

静态局部变量:局部变量就是在函数里面的static,那就只能在函数里面使用了,刚刚我也提到了由于被static修饰的变量都存放在静态存储区,所以即使该函数就算结束了该静态变量也不会被销毁,如果下次在调用这个函数还是原来的值。

作用2:修饰函数

修饰函数。就是在函数前面添加static使得函数变为静态函数。但是要和变量区分开来,这里不是说把函数保存到静态存储区,而是说该函数的作用域仅限在本文件内,所以这样的函数我们有叫(内部函数)。那这样定义的函数有什么作用呢?在项目开发过程中往往不是单独一个人开发,每一个都有自己的模块,最后综合在一起,这样定义函数就避免了你定义的函数在其他地方被其他人使用导致程序出现问题。

c语言中static关键字改变了(C语言开发中关键字static的经典剖析)(2)

关于static的历史

通过查找资料我发现C语言的关键字还有一段不一样的历史,在最开始在C语言中引入关键字static是为了表示退出后内存块依旧保存局部变量,随后出现了第二种定义:用来表示不能被去头文件访问的全局变量和函数。

看到这里你知道C语言关键字static的用法了么?如果有什么疑问可以评论共同探讨!

在这里看一道笔试题目:

void fun(void)

{

statict int i=0 ;

i ; }

int mian ()

{

int k=0;

for(k=0;k<10;k )

{ fun();}

return 0;

}

你看完知道最后i的结果是多少么?

,