如果对于一个本地变量,你在这个本地变量的类型的前面加上一个新的关键字叫static,这个时候这个本地变量就成为一种新的本地变量,我们叫他静态本地变量.本来我们说本地变量的生存期就在这个函数里头对吧,进去的时候才有,离开的时候就没有了.而我们这个这个静态本地变量有一个非常有意思的特性,你每次离开这个函数以后,这个静态本地变量他还在那,你下次再进去呢,它是上一次离开时候的那个值,而不是每次都做初始化,他的初始化只用做一次.
我们来看一下这件事情:
我们连续调用了几次f函数,我们发现从第一次进去之后,之后的all每一次都是上一次的值.而不是被重新初始化为1.
这个静态变量呢它实际上是全局变量.为什么这么说呢?
我们来做一个小实验:
我们做的事情是,定义了三种变量,普通的本地变量,静态本地变量,全局变量.然后我们再分别输出它们的地址.我们来看看结果怎么样:
我们看到说,挺有意思的哈,我们看到前面两个的差值是4,也就是sizeof(int),它们是紧挨在一起的.gall在前面,后面是那个all.他们俩放在一起,都在一个很小的地方.然后我们看到,k被放到了一个很大的地方,证明了普通的本地变量和静态本地变量根本不在一个地方.
所以从刚才的实验我们就可以看到:
标签:初始化,这个,变量,静态,12.1,本地,我们 From: https://blog.csdn.net/qq_73908174/article/details/143250596