1.定义:

2.在运行程序时,操作系统将虚拟内存进行分区:

全局变量

在同一个.c文件中,全局变量可以直接使用,不需要声明;在不同的文件中要使用其他文件定义的全局变量需要 extern 声明。
普通的全局变量在定义时如果没赋初值,其默认为0.

static 修饰的,就只能在其定义的源文件中使用。
局部变量
普通局部变量:

静态局部变量:

静态全局变量:
#include <stdio.h>
#include <stdlib.h>
void fun()
{ //静态局部变量只初始化一次,重复调用时会直接跳过初始化的代码;
//静态局部变量不会随着函数结束,而释放空间,重复调用函数时,会重复使用之前开辟的空间。
static int a = 100;
a++;
printf("%d\n",a);
printf("%p\n",&a);
}
int main()
{
fun();// 101
fun();//102
fun();//103
return 0;
}

普通全局变量
#include <stdio.h>
#include <stdlib.h>
void fun()
{
int a = 100;
a++;
printf("%d\n",a);
printf("%p\n",&a);//函数结束后,释放空间,且会重复初始化
}
int main()
{
fun();
fun();
fun();
return 0;
}

总结:
