C语言中static变量的理解

1.static定义的变量只能在当前文件使用吗?

不一定。
static定义的全局变量:作用域是当前文件
static定义的局部变量:作用域是该函数

那么下面这段代码可以将static 定义的局部变量传递出去:

#include<stdio.h>
int temp;//定义全局变量
int send(int a,int b)
{
    
    
    static int c;局部变量
    c= a+b;
    temp=c;//局部变量的值传递
   return  temp;
}
//主函数
int main(void)
{
    
    
	  printf("%d",send(1,2));//得到了静态局部变量的值
      return 0;
}

当然这个只是我自己的理解,这样的用法应该用的不多吧,既然要用局部变量的值。为何还要用一个全局变量去传递呢,有点多此一举。

2static关键字的普遍理解

2.1 修饰变量

  • 1静态全局变量
    例如文件a.c中有如下内容:
static int a;
int fun1(int m , int n);
int fun2(int m);
  • 1-1、则这个变量a只能在当前文件中使用,而不能被其他文件如b.c或者d.c等文件直接调用;
  • 1-2、这个变量会保留本次的值直到它下一次被改变

例如文件b.c中有如下内容:

int fun1(int m , int n);
{
    
    
	static int a=5;
	return (a+m+n);
}
int fun2(int m);
int fun2(int m);
  • 2静态局部变量
    • 2-1、则这个变量a只能在当前函数中使用,而不能当前文件其他函数如fun2(),fun3()等直接调用;
    • 2-2、这个变量会保留本次的值直到它下一次被改变

2.2修饰函数

有a.c中的一个静态函数 如下:

static fun(int a);

则该函数只能在a.c中被其它函数调用,而不能被例如b.c,d.c等a.c之外的函数调用

猜你喜欢

转载自blog.csdn.net/ericanxuanxuan/article/details/105195363