存儲期限
自動存儲期限的變量在所屬塊被執(zhí)行時獲得內(nèi)存單元盟劫,并在塊終止時釋放內(nèi)存單元,從而會導(dǎo)致變量失去值砖茸。
靜態(tài)存儲期限的變量在程序運行期間占有同一個存儲單元侣诵,也就允許變量無限期地保留它的值。
作用域
塊作用域:變量從聲明的地方一直到所在塊的末尾都是可見的边苹。
文件作用域:變量從聲明的地方一直到所在文件的末尾都是可見的陵且。
鏈接
外部鏈接的變量可以被程序中的幾個(或全部)文件共享。
內(nèi)部鏈接的變量只能屬于單獨的一個文件个束,但是此文件中的函數(shù)可以共享這個變量慕购。
無鏈接的變量屬于單獨一個函數(shù),而且根本不能被共享茬底。
int i沪悲;(靜態(tài)存儲期限、文件作用域桩警、外部鏈接)
void f(void)
{
? ? int 可训;(自動存儲期限、塊作用域捶枢、無鏈接)
}
static int i握截;(靜態(tài)存儲期限、文件作用域烂叔、內(nèi)部鏈接)
void f(void)
{
static int 谨胞;(靜態(tài)存儲期限、塊作用域蒜鸡、無鏈接)
}
extern int i胯努;(靜態(tài)存儲期限、文件作用域逢防、什么鏈接)
void f(void)
{
extern int 叶沛;(靜態(tài)存儲期限、塊作用域忘朝、什么鏈接)
}
確定extern型變量的鏈接有一定難度灰署,如果變量在文件中較早的位置(任何函數(shù)定義的外部)聲明為static,那么它具有內(nèi)部鏈接局嘁;否則(通常情況下)溉箕,變量具有外部鏈接。