static关键字的作用

static变量在c语言中的作用

1.子函数中的静态变量

在定义变量前加上static关键字成为静态变量之后,这该变量的生存周期就会更变,直到整个程序运行结束之后,该静态变量才会销毁.

生存周期: 变量从定义到销毁的时间范围。存放在全局数据区的变量的生存周期存在于整个程序运行期间,而存放在栈中的数据则随着函数等的作用域结束导致出栈而销毁,除了静态变量之外的局部变量都存放于栈中。

static变量是指静态的变量,不管是在全局还是局部声明的static变量都存放于程序的全局变量区域,所以它的生命周期是从程序开始到程序结束。但是static变量的作用域并不等同于它的生存周期,它的作用域决定于它被定义的位置。
举一个例子:

void test()
{
int m=3;
static int i=5;
} 

在test函数运行完之后,变量m就会进行销毁,但变量i不会被销毁,会直到整段程序运行结束,变量i才会被销毁.否则会一直存有数值,但该数值也仅仅在被定义区间有效!

2.全局中的静态变量

在全局定义一个静态变量是想只在该文件程序中使用该变量,与其他文件程序不共享此变量.

举个例子:

在文件A中

int n=3; //默认为extern
static int j=5; //声明为static 

全局变量和静态变量j都存放于程序的全局数据区域,它们的生存周期都是程序的整个运行期,但是n的作用域为全局作用域,可以通过extern在其他文件中使用,而j只能在文件A中使用

在文件B中:

extern int n; // allow
extern int j; //error: j在文件B中不可见 

也就是说,在声明全局的static变量时,static没有改变它的生存周期,而是将变量的作用域限制在当前文件中。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值