天天看點

C++中的靜态變量位址探讨

#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;
}
           
C++中的靜态變量位址探讨

如圖我們可以看到,變量a和變量b的位址是相鄰的,也就是說,這兩個變量是放在記憶體的同一片位址中,而變量c的位址和其他完全不同,是放在不同的另一個區域。

這裡就說明了靜态變量是放置在全局區,不管是在全局聲明的,還是在函數裡聲明的。