C中什么情况下把局部变量定义为局部静态变量

Posted 狂奔VS蜗牛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C中什么情况下把局部变量定义为局部静态变量相关的知识,希望对你有一定的参考价值。

首先要说明,数组不是变量;C中称它是具有相同类型元素的集合,严格说来它是一种简单的数据结构——这是题外话。定义在函数中的自动型(就是不用static修饰)数组,函数被调用时才创建,而函数结束后就自动销毁了,那么函数执行过程中对它的操作就白费了。
定义成static型后,编译时就为其分配内存空间并永久性保留着,直到程序结束,函数对它的操作就不会丢失了。知道这个原理后,也就知道并不是函数中的数组都得定义成static型,比如操作结果是在屏幕上显示数组内容,那在函数里作显示,这就不必用static了……

如果你希望在一个函数中对一个变量只执行一次初始化,以后不再初始化,使用上一次结果,就应该使用静态局部变量。
例如: static int n; 
其他类型都可以。

解决方案二:

比如说你要在局部计算一个圆的半径,那么你可以将PI的值申请为static,因为PI以后再也不会变更了!希望能够帮到你!

解决方案三:

static修饰的变量,可以在任何地方通过类名::变量名的方法访问他的值,比如你要统计一个类创建的次数,就可以给这个类 写个static的变量用来计数

解决方案四:

加了static只不过是存储的位置不一样了而已,跟是否局部变量没关系,当然,全局变量加不加static都一样。


以上是关于C中什么情况下把局部变量定义为局部静态变量的主要内容,如果未能解决你的问题,请参考以下文章

局部变量 静态局部变量 全局变量与静态局部变量

C语言中static是做啥用的?

在C语言中具体静态变量static要这么去用?

c语言的auto和static类型变量

java的静态内部类中定义的变量是全局的么?

c++ int类型默认值是多少?