《C和指針》第二版 P44-45
C語言的變量具有3種特征发绢,作用域硬耍,鏈接屬性垄琐,存儲類型。
4種作用域:文件作用域经柴,函數(shù)作用域狸窘,代碼塊作用域,原型作用域
3種鏈接屬性:外部external坯认,內(nèi)部internal翻擒,無none
3種存儲類型:自動automatic,靜態(tài)static牛哺,寄存器register
當(dāng)用于不同的上下文環(huán)境時陋气,static關(guān)鍵字具有不同含義。
(1)用于函數(shù)定義荆隘,用于代碼塊之外的變量聲明
static關(guān)鍵字用來修改標(biāo)識符的鏈接屬性恩伺,external改為internal。
用這種方式聲明的函數(shù)或變量只能在聲明它們的源文件中訪問椰拒。
但標(biāo)識符的存儲類型和作用域不受影響晶渠。
(2)用于代碼塊內(nèi)部的變量聲明
static關(guān)鍵字用來修改變量的存儲類型,從自動變量修改為靜態(tài)變量燃观。
用這種方式聲明的變量在程序執(zhí)行之前創(chuàng)建褒脯,并在程序的整個執(zhí)行期間一直存在。而不是每次在代碼塊開始執(zhí)行時創(chuàng)建缆毁,在代碼塊執(zhí)行完畢后銷毀番川。
但變量的鏈接屬性和作用域不受影響。