在函数体内定义static int一般是什么用法?

例如staticinttest=0;怎么感觉和全局静态有点类似,请高手解答一下... 例如
static int test= 0;
怎么感觉和全局静态有点类似,请高手解答一下
展开
 我来答
陈宗权8d804
2011-01-20 · TA获得超过3766个赞
知道小有建树答主
回答量:1159
采纳率:0%
帮助的人:966万
展开全部
函数体内定义的静态局部变量,它的生命期跟全局变量相同,在整个程序运行期间一直保留;它的可见性跟局部变量相同,只有在这个函数内部才能通过这个变量名访问这个变量。
luanqibazao227
2011-01-20 · TA获得超过1.6万个赞
知道大有可为答主
回答量:6109
采纳率:57%
帮助的人:3483万
展开全部
看看static的详解,下面有链接另外:
在头文件中声明静态变量,一般是不可取的。尽量不要这样做。

但是这种做法不会引起错误,因为在头文件中只是变量的声明,不是定义,
当有源文件引用这个头文件后,相当于把头文件中的声明语句拷贝到源文件中,这时才是变量的定义。
由于static使得变量只有在定义的文件中是可见的,所以,每个引用静态变量头文件的源文件都有自己独立的静态变量,虽然变量名相同,但是不会冲突,
编译器在编译时,为每个文件中的同名静态变量分配的是不同的地址空间。

参考资料: http://baike.baidu.com/view/536145.htm

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
小八79
2011-01-20 · TA获得超过504个赞
知道小有建树答主
回答量:360
采纳率:0%
帮助的人:264万
展开全部
把局部变量当全局变量使用
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Sweet丶奈何
高粉答主

2015-11-05 · 每个回答都超有意思的
知道大有可为答主
回答量:2.8万
采纳率:82%
帮助的人:4835万
展开全部
static定义变量的使用:
一、静态局部变量:
1、Static类内部变量同auto自动变量(即未加 Static 声明的局部变量)一样,是某个特定函数的局部变量,即只能在定义该变量的函数内使用该变量,2者作用域相同;两者的不同在于:auto自动变量会随着函数被调用和退出而存在和消失,而static类局部变量不会,它不管其所在的函数是否被调用,都将一直存在;不过,尽管该变量还继续存在,但不能使用它。倘若再次调用定义它的函数时,它又可继续使用,而且保存了前次被调用后留下的值。换言之,Static类型的内部变量是一种只能在某个特定函数中使用,但一直占据存储空间的变量。
2、函数体内如果在定义静态变量的同时进行了初始化,则以后程序不再进行初始化操作(出现在函数内部的基本类型的的静态变量初始化语句只有在第一次调用才执行)。而对自动变量赋初值是在函数调用时进行,每调用一次函数重新给一次初值,相当于执行一次赋值语句。
3、静态局部变量的初始化表达式必须是一个常量或者常量表达式。即使局部静态变量定义时没有赋初值,系统会自动赋初值0(对数值型变量)或空字符(对字符变量);静态变量的初始值为0。而对自动变量auto来说,如果不赋初值则它的值将是个不确定的值。
4、当多次调用一个函数且要求在调用之间保留某些变量的值时,可考虑采用静态局部变量。虽然用全局变量也可以达到上述目的,但全局变量有时会造成意外的副作用,因此仍以采用局部静态变量为宜。
注:局部静态变量占用内存时间较长,并且可读性差,因此,除非必要,尽量避免使用局部静态变量。

二、静态全局变量
全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。
全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式。
这两者在存储方式上并无不同。

这两者的区别虽在于:
1、非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。
2、静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效,在同一源程序的其它源文件中不能使用它。

由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用,因此可以避免在其它源文件中引起错误。

从以上分析可以看出————
把局部变量改变为静态变量后是改变了它的存储方式,即改变了它的生存期。
把全局变量改变为静态变量后是改变了它的作用域,限制了它的使用范围。
因此static这个说明符在不同的地方所起的作用是不同的。应予以注意。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式