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,才有意义

发布了9 篇原创文章 · 获赞 18 · 访问量 1572

猜你喜欢

转载自blog.csdn.net/weixin_45677047/article/details/104488325