浅析static
Posted zsQgqdsd1002
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了浅析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的用法和作用,还有很多的关键字我在慢慢的探索和学习过程中,希望可以和大家一起进步。如果有错误的地方或者没有说到的地方,欢迎大佬私信我。
以上是关于浅析static的主要内容,如果未能解决你的问题,请参考以下文章
浅析Object基类提供的Virtual Object.Equals, Static Object.Equals and Reference.Equals等三个方法
浅析java修饰符之public default protected private static final abstract