震惊!竟然有人如此解释关键字中的static

震惊!竟然有人如此解释关键字中的static_第1张图片

:大家好,我是paperjie,感谢你阅读本文,欢迎一建三连哦。

:这里是C专栏,笔者用重金(时间和精力)打造,基础知识一网打尽,希望可以帮到读者们哦。

:不要998,只要一件三连,三连买不了吃亏,买不了上当(写作不易,求求了)。


目录

前言

static的作用

修饰局部变量

修饰全局变量

修饰函数

总结


前言

在C专栏里,会有对C中一些重要的知识详细概括与分析,且还会对一些题目进行展开讲解,请各位看光敬请期待哦!

static的作用

static在C语言中是用来修饰变量与函数的。它具体有三个用法,1修饰局部变量,成为静态局部变量。2修饰全局变量,成为静态全局变量。3修饰函数,称为静态函数。

修饰局部变量

static修饰局部变量,是局部变量的储存位置改变了,是它的生命周期变长了,但作用域没改变。对于上面这句话可以通过画图和代码很好的理解清楚,话不多说,直接上图:

通过结果都是1,我们可以发现没有用static局部变量j一出局部范围就销毁了,下一次循环上来还是0,所以局部变量j的生命周期还在test()这个局部范围里,并没有改变。

震惊!竟然有人如此解释关键字中的static_第2张图片

通过结果发现j在不断增加,我们可以发现是使用static后j的生命周期变长了,出了test()的范围并不会销毁,j的值很好的延续下去了。

震惊!竟然有人如此解释关键字中的static_第3张图片

看到这里,相比很多看官老爷会对改变变量的储存位置这个说法感到疑惑叭,在这里就画图给大家解释。看完这个图大家就更深层次理解了叭,没使用static时,j是在栈区储存的局部变量,遵循栈区变量的特点,出了作用域就销毁。 而使用static后j就变成了静态变量,就在静态区中,遵循静态区变量的特点,程序结束才销毁。

震惊!竟然有人如此解释关键字中的static_第4张图片

修饰全局变量

全局变量具有外部链接属性,在其他源文件中依然可以使用。but 用static修饰全局变量的话,就会改变全局变量的链接属性,使外部链接链接属性变成内部链接属性,只能在自己所在的源文件中使用。

未使用static修饰a:

震惊!竟然有人如此解释关键字中的static_第5张图片

使用static修饰a:发现编辑器直接报错了,a在test.c这个源文件里无法使用。

震惊!竟然有人如此解释关键字中的static_第6张图片

修饰函数

函数有外部属性,在别的原文件里也能使用,但是在被static修饰后只能在自己所在的原文件里使用,外部属性变成内部属性。

 未使用static:震惊!竟然有人如此解释关键字中的static_第7张图片

 使用static:使用后直接报错,无法解析外部符号add这个函数,因为它的外部属性变成了内部属性。

震惊!竟然有人如此解释关键字中的static_第8张图片


总结

static这个关键字还是有一些作用的,比如你把这份代码想卖给别人,但是又不想别人知道怎么实现的,就可以加上static改变外部链接属性。好啦,就到这里啦,希望各位看官老爷给个一键三连哦 

你可能感兴趣的:(C语言,c语言)