浅析static


前言

C语言中有许多关键字,每个关键字都有着不同的作用以及意义,例如typedef的作用是起别名,const的作用是让一个变量变成常量等等,而今天要说的是一个可以修饰变量和函数的关键字——static。


提示:以下是本篇文章正文内容,下面案例可供参考

一、static是什么?

Static是C语言中众多关键字其中之一,其作用是修饰变量和函数,那么具体会起到一个怎么样的作用呢?现在让我们一起来探索一下。

二、static的用法及作用

1.static修饰局部变量

static可以放在局部变量之前,我们用一个简单的程序来探索一下static的用法

void Func() {
	int x = 0;
	x = x + 3;
	printf("%d\n", x);
}
int main() {
	Func();
	Func();
	Func();
	return 0;
 }

程序的输出结果会是什么呢?没错!程序会一直打印3,因为x是一个局部变量,在main函数调用Func是诞生,一旦调用结束,x就会被释放,在下一次调用时,x就会重新变为0。现在我们对程序进行一个小小的改动:

void Func() {
	static int x = 0;
	x = x + 3;
	printf("%d\n", x);
}
int main() {
	Func();
	Func();
	Func();
	return 0;
 }

我们再来看一看程序的输出结果:
在这里插入图片描述
此时程序的输出结果变成了3,6,9。这就是static起到了作用,当static修饰局部变量时,会改变局部变量的生命周期,原本Func函数里的x的生命周期是Func函数内,用完就会被释放;而static修饰后,x的生命周期就变成了整个函数。

2.static修饰全局变量

static也可以放在全局变量之前,我们再来简单的验证一下它的作用,我们来定义一个全局变量,将这个全局变量在放另一个.c文件中,然后在test.c中调用一下这个全局变量:

int global = 100;
extern global;
//声明一下变量global,当我们访问另一个函数里的变量时,需要加上变量声明,不然无法成功调用
int main() {
	printf("%d", global);
}

我们来看一下程序的输出结果,输出的结果是100。我们现在小小的改动一下:

static int global = 100;

在这里插入图片描述
这个时候我们发现,程序报错了,并且给出的原因是global无法被解析,所以我们知道,当static修饰全局变量时会修改全部变量的作用域,从整个工程中修改到当前文件中。

3.static修饰函数

static修饰函数的作用和修饰全局变量的作用是一样的,都是将其作用范围修改至仅当前文件可以调用。这里我们就不多做解释了。


总结

以上就是今天我想讲的内容,我仅仅简单介绍了C语言众多关键字中的一种,即——static的用法和作用,还有很多的关键字我在慢慢的探索和学习过程中,希望可以和大家一起进步。如果有错误的地方或者没有说到的地方,欢迎大佬私信我。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值