天天看点

C语言局部变量(普通局部变量,与static局部变量)和全局变量(普通全局变量和static全局变量 )

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main0()//局部变量 
{
	int i,j;//这里的 i,j两个都是局部变量
	for (int k=0;k<5;k++)//这里的 k也是局部变量,一旦for循环结束,k自动释放 
	{
		printf("%d \n",10);
	 } 
	return 0;
}
void fun()//静态局部变量 
{
	static int i=1;
	i++;
	printf("%d \n",i);
}
int main1()
{
	fun();
	fun();
	fun();
 } 
 void fun1()
 {
 	extern int i;
 	printf("%d \n",i);
 }
 //int i=1;
 int main2()
 {
 	fun1();
 	printf("%d ",i);
 }
 
           

static全局变量

1.static全局变量和普通全局变量的区别就是作用域不一样(文件作用域)

2.extern关键字只适用于普通全局变量

3.普通全局变量,所有文件都能使用,别的文件不能使用

4.不同文件只能出现一个普通全局变量的定义

5.一个文件只能有一个static全局变量的定义,不同文件间static全局变量,就算名字相同,也没有关系

普通局部变量

1.在{}内部定义的变量就是局部变量

2.只有执行到定义变量这个语句,系统才会给这个变量分配空间

3.当离开{},这个非static局部自动释放

4.局部变量的作用域在当前{},离开此{},无法使用

5.不同的{}中,变量名字可以一样

static局部变量

1.static变量不初始化,默认值为0;

2.static局部变量初始化语句只执行一次,可以赋值多次;

3.static在编译阶段就分配空间,在函数还没有调用时,它就已经存在

4.static只能常量初始化

5.static局部变量只有在整个程序结束时,才会自动释放

普通全局变量

1.在{}外面(函数外面)定义的变量为全局变量

2.只有定义了全局变量,任何地方都能使用此变量

3.如果使用变量时,在前面找不到此全局变量的定义,需要使用extern声明后才可以使用

4.全局变量不初始化,默认赋值为0

5.声明只是针对全局变量,不是针对局部变量

6.全局变量只能定义一次,可以声明多次

继续阅读