C语言里面静态变量static学习笔记

Static如何使用?

今天晚上有个姐妹给我发了一道题,题中的代码量不大,但非常考验对Static的用法,如果没有理解清楚,可能就会跟我一样想了半天还是不会。在这里插入图片描述

Static静态变量的生存期是整个程序的运行期,它被定义后就一直存在,要保留某个函数的中间结果,就可以用静态变量。

  • 如果static申明的是全局变量,那么这个全局变量只能在这个编译单元(文件)使用,利于模块封装。
  • 如果static申明的是局部变量,那么函数返回时将不会释放该变量空间。
#include<stdio.h>
int a=4;//全局变量
int f(int n)
{
int t=0;
static int a=5;//初次声明变,第二次声明不变(自动忽略)(局部变量);
if(n%2)
{
	int a =6;
	t+=a++;
} 
else
{	
	int a=7;
	t+=a++}
return t+a++;
int main()
{
int s=a,i=0;
for(;i<2;i++) s+=f(i);//循环两次,总算法为a+f(0)+f(1);
printf("%d\n",s);
return 0;
} 

总算法过程

首先第一次循环i=0;
进入f(i)0对2区余为假
进入else a=7;t=7。
跳出if语句后a又成为5
返回值是12.
此处static int a=6;
第二次循环i=1;a=6;t=6.
跳出IF语句后就成t=6+static的这个a(6)
返回12.
加起来是24,之后在加上句首定义的int a=4;
12+12+4=28.

return t+a++ 等于return t+(a++)
a应该是static,才有意义

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

长高

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值