首頁 考試吧論壇 Exam8視線 考試商城 網絡課程 模擬考試 考友錄 實用文檔 求職招聘 論文下載 | ||
![]() |
2011中考 | 2011高考 | 2012考研 | 考研培訓 | 在職研 | 自學考試 | 成人高考 | 法律碩士 | MBA考試 MPA考試 | 中科院 |
|
![]() |
四六級 | 職稱英語 | 商務英語 | 公共英語 | 托福 | 雅思 | 專四專八 | 口譯筆譯 | 博思 | GRE GMAT 新概念英語 | 成人英語三級 | 申碩英語 | 攻碩英語 | 職稱日語 | 日語學習 | 法語 | 德語 | 韓語 |
|
![]() |
計算機等級考試 | 軟件水平考試 | 職稱計算機 | 微軟認證 | 思科認證 | Oracle認證 | Linux認證 華為認證 | Java認證 |
|
![]() |
公務員 | 報關員 | 銀行從業資格 | 證券從業資格 | 期貨從業資格 | 司法考試 | 法律顧問 | 導游資格 報檢員 | 教師資格 | 社會工作者 | 外銷員 | 國際商務師 | 跟單員 | 單證員 | 物流師 | 價格鑒證師 人力資源 | 管理咨詢師考試 | 秘書資格 | 心理咨詢師考試 | 出版專業資格 | 廣告師職業水平 駕駛員 | 網絡編輯 |
|
![]() |
衛生資格 | 執業醫師 | 執業藥師 | 執業護士 | |
![]() |
會計從業資格考試(會計證) | 經濟師 | 會計職稱 | 注冊會計師 | 審計師 | 注冊稅務師 注冊資產評估師 | 高級會計師 | ACCA | 統計師 | 精算師 | 理財規劃師 | 國際內審師 |
|
![]() |
一級建造師 | 二級建造師 | 造價工程師 | 造價員 | 咨詢工程師 | 監理工程師 | 安全工程師 質量工程師 | 物業管理師 | 招標師 | 結構工程師 | 建筑師 | 房地產估價師 | 土地估價師 | 巖土師 設備監理師 | 房地產經紀人 | 投資項目管理師 | 土地登記代理人 | 環境影響評價師 | 環保工程師 城市規劃師 | 公路監理師 | 公路造價師 | 安全評價師 | 電氣工程師 | 注冊測繪師 | 注冊計量師 |
|
![]() |
繽紛校園 | 實用文檔 | 英語學習 | 作文大全 | 求職招聘 | 論文下載 | 訪談 | 游戲 |
二、變量存儲類型
前面我們說了,聲明變量時用如下類似的形式:
int num;
float total;
它們都沒有存儲類型修飾符,我們在聲明時也可以通過存儲類型修飾符來告訴編譯器將要處理什么類型的變量。存儲類型有以下四種:自動(auto)、靜態(static)、外部(extern)、寄存器(regiser)。
1.自動存儲類型
自動存儲類型修飾符指定了一個局部變量為自動的,這意味著,每次執行到定義該變量的語句塊時,都將會為該變量在內存中產生一個新的拷貝,并對其進行初始化。實際上,如果不特別指明,局部變量的存儲類型就默認為自動的,因此,加不加auto都可以。
main()
{
auto int num=5;
printf(%d\n,num);
}
在這個例子中,不論變量num的聲明是否包含關鍵字auto,代碼的執行效果都是一樣的。函數的形式參數存儲類型默認也是自動的。
2.靜態存儲變量
前面已經使用了static關鍵字,但是對于局部變量,靜態存儲類型的意義是不一樣的,這時,它是和自動存儲類型相對而言的。靜態局部變量的作用域仍然近局限于聲明它的語句塊中,但是在語句塊執行期間,變量將始終保持它的值。而且,初始化值只在語句塊第一次執行是起作用。在隨后的運行過程中,變量將保持語句塊上一次執行時的值。看下面兩個對應的程序:
/*1.C*/ /*2.C*/
int add(); int add();
main() main()
{ {
int result; int result;
result=add() result=add();
printf(%d ,result); printf(%d ,result);
result=add(); result=add();
printf(%d ,result); printf(%d ,result);
result=add(); result=add();
printf(%d,result); printf(%d,result);
} }
int add() int add()
{ {
int num=50; static int num=50;
num++; num++;
return num; return num;
} }
上面兩個源文件,只有函數add()里的變量聲明有所不同,一個是自動存儲類型,一個是靜態存儲類型。
對于1.C文件,輸出結果為51 51 51;這很好理解,每次初始值都是50,然后加1上來。
對于2.C文件,輸出結果為51 52 53;這是由于變量是靜態的,只在第一次初始化了50,以后都是使用上次的結果值。當第一次調用add()時,初始化為50,然后加1,輸出為51;當第二次調用時,就不初始化了,這時num的值為上次的51,然后加1,輸出52;當第三次調用時,num為52,加1就是53了。
相關推薦:計算機等級考試二級C語言教程匯總北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內蒙古 |