4. C语言- - -全局,局部,静态变量一篇说明白

4. C语言- - -全局与局部变量

1. 普通全局变量

概念:

int i;
int main()
{
i++;
return  0;
}
	全局变量一般在文件开头定义(main()函数之前,函数之外)。
	全局变量作用范围是在所有程序文件中都可以调用,不同文件之间调用使用(  extern  int   i );注意声明时候不要赋值。

1.生命周期:
程序运行的整个过程,一直存在,直到程序结束。
2.注意:
定义普通的全局变量的时候,如果不赋初值,那么它的初值默认为0.

静态全局变量 static

概念: 定义全局变量的时候,前面用static修饰。
比如:

static  int num;  //num就是一个静态全局变量
int  main()
{
num--;
return  0;

}
  1. 作用范围:
    static限定了静态全局变量的作用范围,它只能在它定义的 .c 源文件中有效,不能跨文件使用,只能在该.c文件中使用。
  2. 生命周期: 在程序的整个运行过程中,它一直存在。
  3. 静态变量只初始化一次

注意:定义静态全局变量的时候,如果不赋初值,它的初值也默认为0.

3. 普通局部变量

1.概念 :
在函数背部定义,或者复合语句中定义的变量。
如果未初始化,则会随机分配初始化值
2. 作用范围:
在函数中的定义的变量,在函数中有效。
在复合语句中定义的,在复合语句中有效。

  1. 生命周期:

在函数调用之前,局部变量不占用空间,调用函数的时候,才为局部变量开辟变量空间,函数运行结束了,局部变量就释放了。在复合语句中也是一样。
取个例子:

void  fun()
{
	int tum=9;  //tum只能在fun()函数中使用。
	printf("tum1 = %d", tum);
	tum++;
	printf("tum2 = %d", tum);
}
int main()
{
	fun();
	
	return 0;
}

在这里插入图片描述

4. 静态的局部变量

  1. 概念: 定义局部变量的时候,前面加static修饰。

2.作用范围:

在它定义的函数或复合语句中有效。

3.生命周期:

第一次调用函数到时候,开辟空间赋值,函数结束后,不释放空间,以后再次定义函数的时候,就不再为其开辟空间,也不赋初值,用的是以前的那个变量。

所以静态局部变量只会初始化一次,下一次直接跳过它的初始化语句,向下执行。

void  fun()
{
	int tum=9;
	static  int  temp,mm;  // temp,mm为 静态局部变量,不进行初始化默认值为0
	printf("tum1 = %d,temp = %d\n", tum,temp);
	tum++;
	mm += 10;
	printf("tum2 = %d,mm = %d\n", tum,mm);
}
int main()
{

	fun();
	fun();
	fun();
	
	return 0;
}

在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值