静态本地变量

基础:

1.在定义本地变量时在前面加上static修饰符使其变为静态本地变量;

2.当离开函数使,静态本地变量的值会继续存在并保持原值;

3.静态本地变量的赋值只发生在第一次进入函数时,当再次进入时会保持上次离开时的值;

4.由于静态本地变量与全局变量拥有相同的内存区域,因此它实际上是拥有全局生存期,但拥有在函数内局部作用域的特殊全局变量。 

#include<stdio.h>
int ALL = 0;
void fun();
int main(int argc, char const* argv[])
{
	fun();
	fun();
	fun();
	return 0;
}
void fun()
{
	int k = 0;
	static int all = 0;
	ALL++;
	all++;
	k++;
	printf("&ALL=%p\n", &ALL);
	printf("&all=%p\n", &all);
	printf("&k  =%p\n", &k);
	printf("ALL=%d\n", ALL);
	printf("all=%d\n", all);
	printf("k  =%d\n", k);
}

输出结果如下:

&ALL=00007FF6683FC170
&all=00007FF6683FC174
&k  =000000BCB03FFB24
ALL=1
all=1
k  =1
&ALL=00007FF6683FC170
&all=00007FF6683FC174
&k  =000000BCB03FFB24
ALL=2
all=2
k  =1
&ALL=00007FF6683FC170
&all=00007FF6683FC174
&k  =000000BCB03FFB24
ALL=3
all=3
k  =1

由以上信息我们可以看到全局变量“ALL"与静态本地变量”all"的储存位置相邻,但与本地变量“k"相距较远,且可以证明以上基础第三条。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值