#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的地址和其他完全不同,是放在不同的另一个区域。
这里就说明了静态变量是放置在全局区,不管是在全局声明的,还是在函数里声明的。