#include"stdio.h"
//全局静态变量
static int a;
void say()
{
//静态变量
static int b;
printf("b %p\n",&b);
//栈临时变量
int c;
printf("c %p\n",&c);
}
int main()
{
printf("a %p\n",&a);
say();
return 0;
}
如图我们可以看到,变量a和变量b的地址是相邻的,也就是说,这两个变量是放在内存的同一片地址中,而变量c的地址和其他完全不同,是放在不同的另一个区域。
这里就说明了静态变量是放置在全局区,不管是在全局声明的,还是在函数里声明的。