全局变量/全局静态变量/静态变量/静态局部变量/局部变量

静态变量

静态变量的类型说明符是static,静态变量属于静态存储方式,但属于静态存储方式的不一定是静态变量,如外部变量(全局变量)就属于静态存储方式,但不是静态变量。必须有static加以定义才是静态变量,或静态全局变量。对于自动变量(局部变量),属于动态存储方式。当自动变量用static定义后就成为了静态自动变量。或静态局部变量,从而成为静态存储方式。

局部变量

以前的累计值不会通过调用函数保留下来,函数只会简单地返回调用它的那个相同值。

静态局部变量

1.静态局部变量在函数类定义,但它不像局部变量那样,当调用时就存在,推出函数时就消失。静态局部变量始终存在着,也就是说它的生存期为整个源程序。

2.静态局部变量的生存期虽然为整个源程序,当期作用域仍与自动变量相同。只能在定义改变量的函数内使用该变量,退出该函数后,尽管改变了还继续存在,但不能使用它。

3.允许对构造类静态局部变量赋初值。若未赋予初值,则有系统自动赋予0值。

4.对基本类型的静态局部变量若在说明时未赋以初值,则系统自动赋予0值。而对自动变量不赋初值,则其值是不定的。 根据静态局部变量的特点, 可以看出它是一种生存期为整个源程序的量。虽然离开定义它的函数后不能使用,但如再次调用定义它的函数时,它又可继续使用,而且保存了前次被调用后留下的值。 因此,当多次调用一个函数且要求在调用之间保留某些变量的值时,可考虑采用静态局部变量。虽然用全局变量也可以达到上述目的,但全局变量有时会造成意外的副作用,因此仍以采用局部静态变量为宜.

全局静态变量与全局变量的区别

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

2.非静态全局变量的作用域是整个原程序,当一个源程序由多个源文件组成时,全局变量在各个源文件中都是有效的。而静态全局变量则限制了其作用域,及只在定义该变量的源文件内有效,在同一源程序的其他源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该院文件内的函数公用,因此可以避免其他源文件中引起错误。总结

 

从以上分析可以看出, 把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域,限制了它的使用范围。因此static 这个说明符在不同的地方所起的作用是不同的。应予以注意。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C语言中有四种类型的变量局部变量全局变量静态局部变量静态全局变量。 1. 局部变量(Local Variables): 局部变量是在函数内部声明的变量,它们只在函数内部可见和访问。局部变量的作用域仅限于声明它们的函数内部。当函数执行完毕后,局部变量会被销毁,其占用的内存也会被释放。 2. 全局变量(Global Variables): 全局变量是在函数外部声明的变量,它们可以被程序中的所有函数访问。全局变量的作用域从声明开始的地方一直延伸到文件的末尾。全局变量在整个程序的执行过程中都是存在的,因此会占用内存。需要注意的是,在多个文件中使用同名的全局变量会导致冲突,因此应该避免这样的情况发生。 3. 静态局部变量(Static Local Variables): 静态局部变量与普通局部变量相似,都是在函数内部声明。不同之处在于,静态局部变量只会在首次进入该函数时进行初始化,之后的函数调用不会重新初始化该变量。同时,静态局部变量的作用域仍然限制在声明它们的函数内部,但是其生命周期会延长到整个程序的执行过程。 4. 静态全局变量(Static Global Variables): 静态全局变量与普通全局变量相似,都是在函数外部声明。不同之处在于,静态全局变量只能在声明它们的文件内部访问,其作用域被限制在当前文件范围内。其他文件无法访问该变量静态全局变量会在程序开始执行时进行初始化,并且在整个程序执行期间都存在。 以上就是C语言中四种不同类型的变量局部变量全局变量静态局部变量静态全局变量的特点和用法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值