亚洲欧洲国产欧美一区精品,激情五月亚洲色五月,最新精品国偷自产在线婷婷,欧美婷婷丁香五月天社区

      考試首頁 | 考試用書 | 培訓課程 | 模擬考場 | 考試論壇  
      全國  |             |          |          |          |          |         
        當前位置:計算機等級 > 二級考試 > C語言程序設計 > C語言輔導 > 文章內(nèi)容
        

      計算機二級C語言程序設計考點解析:函數(shù)

      中華IT學院   【 】  [ 2017年6月29日 ]

        7.6局部變量和全局變量

        1.局部變量

        在一函數(shù)內(nèi)部所定義的變量稱為局部變量,局部變量只在本函數(shù)范圍內(nèi)有效。

        注意:

       、俨煌瘮(shù)可以使用相同的局部變量名,它們將代表不同的對象,互不干擾;

        ②一個函數(shù)的形參也為局部變量;

       、墼诤瘮(shù)內(nèi)部,復合語句也可定義變量,這些變量也為局部變量,只在此復合語句中有效。

        2.全局變量

        在C語言中,程序的編譯單位是源程序文件,一個源程序文件中包含一個或多個函數(shù)。在函數(shù)之外所定義的變量稱為外部變量,也稱為全局變量。全局變量可以被包含它的源程序文件中的其他函數(shù)所共用,作用域為從定義變量的位置開始到源程序文件結(jié)束,全局變量可以增加函數(shù)之間數(shù)據(jù)的聯(lián)系。

        注意:當在同一個源程序文件中,全局變量與局部變量同名時,在局部變量的作用范圍內(nèi),全局變量不起作用,局部變量起作用。

        7.7變量的存儲類別、作用域及生存期

        1.變量的存儲類別

        在C語言中,有兩類存儲類別:自動類別及靜態(tài)類別。

        有4個與兩種存儲類別有關的說明符:auto(自動)、register(寄存器)、static(靜態(tài))和extern(外部),這些說明符一般與類型說明一起出現(xiàn),一般放在類型名的左邊,例如:

        autolongI,j;

        也可寫成:

        longautoI,j;

        (1)自動變量:自動變量是C程序中使用最多的一種變量,這種變量的建立和撤消都是在系統(tǒng)中自動進行的。

        格式:[auto]數(shù)據(jù)類型變量名[=初始化表達式],…;

        上面的說明格式中,方括號中是可省略的部分,auto為自動類別標識符,若省略auto,系統(tǒng)缺省的存儲類別也為自動類別。

        注意:函數(shù)的形參也為自動類別,在定義時不必加存儲類別標識符。

        (2)寄存器變量:寄存器變量與自動變量的性質(zhì)相同,其區(qū)別只在于存儲的位置不同,寄存器變量存儲在CPU的寄存器中,而自動變量存儲在內(nèi)存中的動態(tài)存儲區(qū),寄存器變量的存取速度要快些。

        格式:register數(shù)據(jù)類型,變量名[=初始化表達式],…;

        上面的說明格式中,register為寄存器變量的存儲類別標識符。

        說明:

        ①CPU中寄存器的數(shù)目是有限的,因此只能把少數(shù)的變量說明為寄存器變量;

        ②寄存器變量是存放在寄存器中的,而不是存放于內(nèi)存中,所以,寄存器變量無地址;

       、奂拇嫫髯兞康恼f明應盡量放在靠近要使用的地方,用完后盡快釋放,這樣可提高使用效率。

        (3)靜態(tài)變量:靜態(tài)類別變量的存儲空間在程序的整個運行期間是固定的。

        格式:static數(shù)據(jù)類型變量名[=初始化表達式],…;

        在上面的說明格式中,static為靜態(tài)變量的存儲類別標識符。

        靜態(tài)變量的初始化在編譯時進行,定義時可用常量或表達式進行顯式初始化。對于沒有初始化的靜態(tài)變量,自動初始化為0(整型)或0.0(實型)。

        注意:靜態(tài)變量具有可繼承性,這與自動變量有所不同。

        (4)外部變量:使用extern可使外部變量使用范圍擴充到需要使用它的函數(shù)。外部變量可作顯式的初始化,若不作初始化,系統(tǒng)將自動地初始化為0或0.0。

        格式:[extern]數(shù)據(jù)類型,變量名[=初始化表達式],…;

        上面的說明格式中,extern使外部變量的作用范圍擴大到其他源程序文件中。

        注意:局部變量既可以說明為自動類別,也可以說明為靜態(tài)類別;全局變量只能說明為靜態(tài)類別。

        2.變量的作用域及生存期

        在C語言中,變量必須先說明后使用,在程序中一個已定義的變量的使用范圍就是此變量的作用域。經(jīng)過賦值的變量在程序運行期間能保持其值的時間范圍為該變量的生存期。

        (1)局部變量的使用域及生存期

       、僮詣幼兞康氖褂糜蚣吧嫫

        自動變量的存儲單元被分配在內(nèi)存的動態(tài)存儲區(qū),每當進函數(shù)體(或復合語句)時,系統(tǒng)自動為自動變量分配存儲單元,退出時自動釋放這些存儲單元。自動變量的作用域為從定義的位置起,到函數(shù)體(或復合語句)結(jié)束為止。

        自動變量在進入到定義它們的函數(shù)體(或復合語句)時生成,在退出所在的函數(shù)體(或復合語句)時消失,這就是自動變量的生存期。

        使用自動變量的優(yōu)點是使各函數(shù)之間造成信息分隔,不同函數(shù)中使用同名變量時不會相互影響。

       、诩拇嫫髯兞康氖褂糜蚣吧嫫

        寄存器變量的使用域及生存期與自動變量相同。

       、垤o態(tài)存儲類別的局部變量

        在函數(shù)體(或復合語句)內(nèi)部,用static說明的變量靜態(tài)存儲類別的局部變量,這種變量的作用域與自動(或寄存器)變量的作用域相同,但是生存期有所不同。

        在整個程序運行期間,靜態(tài)局部變量在內(nèi)存的靜態(tài)存儲區(qū)中占據(jù)著永久的存儲單元,甚至在退出函數(shù)后下次再進入函數(shù)時,靜態(tài)局部變量仍使用原來的存儲單元。由于不釋放存儲單元,所以這些存儲單元中的值將會被保留下來。靜態(tài)局部變量的生存期將一直延長到程序運行結(jié)束。

        靜態(tài)局部變量適合于在函數(shù)調(diào)用之間必須保留局部變量值的獨立變量。

      分享到:
      本文糾錯】【告訴好友】【打印此文】【返回頂部
      將考試網(wǎng)添加到收藏夾 | 每次上網(wǎng)自動訪問考試網(wǎng) | 復制本頁地址,傳給QQ/MSN上的好友 | 申請鏈接 | 意見留言 TOP
      關于本站  網(wǎng)站聲明  廣告服務  聯(lián)系方式  站內(nèi)導航  考試論壇
      Copyright © 2006-2017 中華考試網(wǎng)(Examw.com) All Rights Reserved  營業(yè)執(zhí)照