#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.全局变量只能定义一次,可以声明多次