12.1.2 静态本地变量

如果对于一个本地变量,你在这个本地变量的类型的前面加上一个新的关键字叫static,这个时候这个本地变量就成为一种新的本地变量,我们叫他静态本地变量.本来我们说本地变量的生存期就在这个函数里头对吧,进去的时候才有,离开的时候就没有了.而我们这个这个静态本地变量有一个非常有意思的特性,你每次离开这个函数以后,这个静态本地变量他还在那,你下次再进去呢,它是上一次离开时候的那个值,而不是每次都做初始化,他的初始化只用做一次.

我们来看一下这件事情:

我们连续调用了几次f函数,我们发现从第一次进去之后,之后的all每一次都是上一次的值.而不是被重新初始化为1.

这个静态变量呢它实际上是全局变量.为什么这么说呢?

我们来做一个小实验:

我们做的事情是,定义了三种变量,普通的本地变量,静态本地变量,全局变量.然后我们再分别输出它们的地址.我们来看看结果怎么样:

我们看到说,挺有意思的哈,我们看到前面两个的差值是4,也就是sizeof(int),它们是紧挨在一起的.gall在前面,后面是那个all.他们俩放在一起,都在一个很小的地方.然后我们看到,k被放到了一个很大的地方,证明了普通的本地变量和静态本地变量根本不在一个地方.

所以从刚才的实验我们就可以看到:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值