首頁考試吧論壇Exam8視線考試商城網(wǎng)絡(luò)課程模擬考試考友錄實用文檔求職招聘論文下載
2013中考
法律碩士
2013高考
MBA考試
2013考研
MPA考試
在職研
中科院
考研培訓(xùn) 自學(xué)考試 成人高考
四 六 級
GRE考試
攻碩英語
零起點日語
職稱英語
口譯筆譯
申碩英語
零起點韓語
商務(wù)英語
日語等級
GMAT考試
公共英語
職稱日語
新概念英語
專四專八
博思考試
零起點英語
托?荚
托業(yè)考試
零起點法語
雅思考試
成人英語三級
零起點德語
等級考試
華為認(rèn)證
水平考試
Java認(rèn)證
職稱計算機 微軟認(rèn)證 思科認(rèn)證 Oracle認(rèn)證 Linux認(rèn)證
公 務(wù) 員
導(dǎo)游考試
物 流 師
出版資格
單 證 員
報 關(guān) 員
外 銷 員
價格鑒證
網(wǎng)絡(luò)編輯
駕 駛 員
報檢員
法律顧問
管理咨詢
企業(yè)培訓(xùn)
社會工作者
銀行從業(yè)
教師資格
營養(yǎng)師
保險從業(yè)
普 通 話
證券從業(yè)
跟 單 員
秘書資格
電子商務(wù)
期貨考試
國際商務(wù)
心理咨詢
營 銷 師
司法考試
國際貨運代理人
人力資源管理師
廣告師職業(yè)水平
衛(wèi)生資格 執(zhí)業(yè)醫(yī)師 執(zhí)業(yè)藥師 執(zhí)業(yè)護士
會計從業(yè)資格
基金從業(yè)資格
統(tǒng)計從業(yè)資格
經(jīng)濟師
精算師
統(tǒng)計師
會計職稱
法律顧問
ACCA考試
注冊會計師
資產(chǎn)評估師
審計師考試
高級會計師
注冊稅務(wù)師
國際內(nèi)審師
理財規(guī)劃師
美國注冊會計師
一級建造師
安全工程師
設(shè)備監(jiān)理師
公路監(jiān)理師
公路造價師
二級建造師
招標(biāo)師考試
物業(yè)管理師
電氣工程師
建筑師考試
造價工程師
注冊測繪師
質(zhì)量工程師
巖土工程師
造價員考試
注冊計量師
環(huán)保工程師
化工工程師
咨詢工程師
結(jié)構(gòu)工程師
城市規(guī)劃師
材料員考試
監(jiān)理工程師
房地產(chǎn)估價
土地估價師
安全評價師
房地產(chǎn)經(jīng)紀(jì)人
投資項目管理師
環(huán)境影響評價師
土地登記代理人
繽紛校園 實用文檔 英語學(xué)習(xí) 作文大全 求職招聘 論文下載 訪談|游戲
軟件水平考試
軟件水平考試資訊
軟件水平考試試題
軟件水平考試專項輔導(dǎo)
軟件水平考試交流互動
軟件水平考試交流互動
您現(xiàn)在的位置: 考試吧 > 軟件水平考試 > 復(fù)習(xí)資料 > 程序員資料 > 正文

C語言初學(xué)者入門知識之函數(shù)04

  變量的存儲方式可分為"靜態(tài)存儲"和"動態(tài)存儲"兩種。

  靜態(tài)存儲變量通常是在變量定義時就分定存儲單元并一直保持不變, 直至整個程序結(jié)束。5.5.1節(jié)中介紹的全局變量即屬于此類存儲方式。動態(tài)存儲變量是在程序執(zhí)行過程中,使用它時才分配存儲單元,使用完畢立即釋放。典型的例子是函數(shù)的形式參數(shù),在函數(shù)定義時并不給形參分配存儲單元,只是在函數(shù)被調(diào)用時,才予以分配,調(diào)用函數(shù)完畢立即釋放。如果一個函數(shù)被多次調(diào)用,則反復(fù)地分配、釋放形參變量的存儲單元。從以上分析可知,靜態(tài)存儲變量是一直存在的,而動態(tài)存儲變量則時而存在時而消失。我們又把這種由于變量存儲方式不同而產(chǎn)生的特性稱變量的生存期。生存期表示了變量存在的時間。 生存期和作用域是從時間和空間這兩個不同的角度來描述變量的特性,這兩者既有聯(lián)系,又有區(qū)別。 一個變量究竟屬于哪一種存儲方式, 并不能僅從其作用域來判斷,還應(yīng)有明確的存儲類型說明。

  在C語言中,對變量的存儲類型說明有以下四種:

  auto 自動變量

  register 寄存器變量

  extern 外部變量

  static 靜態(tài)變量

  自動變量和寄存器變量屬于動態(tài)存儲方式,外部變量和靜態(tài)變量屬于靜態(tài)存儲方式。在介紹了變量的存儲類型之后,可以知道對一個變量的說明不僅應(yīng)說明其數(shù)據(jù)類型,還應(yīng)說明其存儲類型。因此變量說明的完整形式應(yīng)為:存儲類型說明符 數(shù)據(jù)類型說明符 變量名,變量名…;

  例如:

  static int a,b; 說明a,b為靜態(tài)類型變量

  auto char c1,c2; 說明c1,c2為自動字符變量

  static int a[5]={1,2,3,4,5}; 說明a為靜整型數(shù)組

  extern int x,y; 說明x,y為外部整型變量

  下面分別介紹以上四種存儲類型:

  一、自動變量的類型說明符為auto

  這種存儲類型是C語言程序中使用最廣泛的一種類型。C語言規(guī)定,函數(shù)內(nèi)凡未加存儲類型說明的變量均視為自動變量,也就是說自動變量可省去說明符auto。 在前面各章的程序中所定義的變量凡未加存儲類型說明符的都是自動變量。例如:

  { int i,j,k;

  char c;

  ……

  }等價于: { auto int i,j,k;

  auto char c;

  ……

  }

  自動變量具有以下特點:

  1. 自動變量的作用域僅限于定義該變量的個體內(nèi)。在函數(shù)中定義的自動變量,只在該函數(shù)內(nèi)有效。在復(fù)合語句中定義的自動變量只在該復(fù)合語句中有效。 例如:

  int kv(int a)

  {

  auto int x,y;

  { auto char c;

  } /*c的作用域*/

  ……

  } /*a,x,y的作用域*/

  2. 自動變量屬于動態(tài)存儲方式,只有在使用它,即定義該變量的函數(shù)被調(diào)用時才給它分配存儲單元,開始它的生存期。函數(shù)調(diào)用結(jié)束,釋放存儲單元,結(jié)束生存期。因此函數(shù)調(diào)用結(jié)束之后,自動變量的值不能保留。在復(fù)合語句中定義的自動變量,在退出復(fù)合語句后也不能再使用,否則將引起錯誤。例如以下程序:

  main()

  { auto int a,s,p;

  printf("\ninput a number:\n");

  scanf("%d",&a);

  if(a>0){

  s=a+a;

  p=a*a;

  }

  printf("s=%d p=%d\n",s,p);

  }

  { auto int a;

  printf("\ninput a number:\n");

  scanf("%d",&a);

  if(a>0){

  auto int s,p;

  s=a+a;

  p=a*a;

  }

  printf("s=%d p=%d\n",s,p);

  }

  s,p是在復(fù)合語句內(nèi)定義的自動變量,只能在該復(fù)合語句內(nèi)有效。而程序的第9行卻是退出復(fù)合語句之后用printf語句輸出s,p的值,這顯然會引起錯誤。

上一頁  1 2 3 4 5 下一頁

  相關(guān)推薦:

  2012年軟考系統(tǒng)分析師考試60天完美復(fù)習(xí)計劃

  2012年軟件水平考試網(wǎng)絡(luò)工程師章節(jié)筆記講義匯總

  2012年上半年軟件水平考試成績查詢匯總

文章搜索
軟件水平考試欄目導(dǎo)航
版權(quán)聲明:如果軟件水平考試網(wǎng)所轉(zhuǎn)載內(nèi)容不慎侵犯了您的權(quán)益,請與我們聯(lián)系800@exam8.com,我們將會及時處理。如轉(zhuǎn)載本軟件水平考試網(wǎng)內(nèi)容,請注明出處。