1. 程式人生 > >全域性變數,區域性變數,靜態區域性變數

全域性變數,區域性變數,靜態區域性變數

區域性變數 作用域在函式內部  變數的定址 通過esp定址或者ebp定址
全域性變數  整個程序   通過絕對地址定址
靜態區域性變數可以被多次賦值, 其值為最近一次賦值的值
但靜態區域性變數的初始化只能初始化一次, 如果對多次初始化,其實質也只會進行一次初始化, 因此其值也只是第一次初始化的值. 通過絕對地址定址
	static int sum = i;
00F33A1E  mov         eax,dword ptr ds:[00F384ECh]          //記錄區域性靜態變數是否被初始化
00F33A23  and         eax,1                                 //結果只能為0或者1
00F33A26  jne         showStatic+3Dh (0F33A3Dh)             //未初始化 == 0 已初始化 == 1

00F33A28  mov         eax,dword ptr ds:[00F384ECh]          //更新初始化標誌
00F33A2D  or          eax,1                                 
00F33A30  mov         dword ptr ds:[00F384ECh],eax  
00F33A35  mov         eax,dword ptr [i]                     
//賦值
00F33A38  mov         dword ptr ds:[00F384E8h],eax