久久久国产精品秘人口麻豆|永久免费AV无语国产|人成电影免费中文字幕|久久AV嫩草影院2

    1. <dfn id="yitbn"><samp id="yitbn"><progress id="yitbn"></progress></samp></dfn>

          <div id="yitbn"></div>

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

            二級C輔導(dǎo)教程及考點(diǎn)分析:第五章 函數(shù)

             

                二、外部變量外部變量的類型說明符為extern。

                在前面介紹全局變量時已介紹過外部變量。這里再補(bǔ)充說明外部變量的幾個特點(diǎn):
                1. 外部變量和全局變量是對同一類變量的兩種不同角度的提法。全局變是是從它的作用域提出的,外部變量從它的存儲方式提出的,表示了它的生存期。

                2. 當(dāng)一個源程序由若干個源文件組成時, 在一個源文件中定義的外部變量在其它的源文件中也有效。例如有一個源程序由源文件F1.C和F2.C組成: F1.C
                int a,b; /*外部變量定義*/
                char c; /*外部變量定義*/
                main()
                { 
                ……
                }
                F2.C
                extern int a,b; /*外部變量說明*/
                extern char c; /*外部變量說明*/
                func (int x,y)
                {
                ……
                }
                在F1.C和F2.C兩個文件中都要使用a,b,c三個變量。在F1.C文件中把a(bǔ),b,c都定義為外部變量。在F2.C文件中用extern把三個變量說明為外部變量,表示這些變量已在其它文件中定義,并把這些變量的類型和變量名,編譯系統(tǒng)不再為它們分配內(nèi)存空間。 對構(gòu)造類型的外部變量, 如數(shù)組等可以在說明時作初始化賦值,若不賦初值,則系統(tǒng)自動定義它們的初值為0。

                三、靜態(tài)變量

                靜態(tài)變量的類型說明符是static。 靜態(tài)變量當(dāng)然是屬于靜態(tài)存儲方式,但是屬于靜態(tài)存儲方式的量不一定就是靜態(tài)變量, 例如外部變量雖屬于靜態(tài)存儲方式,但不一定是靜態(tài)變量,必須由 static加以定義后才能成為靜態(tài)外部變量,或稱靜態(tài)全局變量。 對于自動變量,前面已經(jīng)介紹它屬于動態(tài)存儲方式。 但是也可以用static定義它為靜態(tài)自動變量,或稱靜態(tài)局部變量,從而成為靜態(tài)存儲方式。
                由此看來, 一個變量可由static進(jìn)行再說明,并改變其原有的存儲方式。

                1. 靜態(tài)局部變量
                在局部變量的說明前再加上static說明符就構(gòu)成靜態(tài)局部變量。
                例如:
                static int a,b;
                static float array[5]={1,2,3,4,5};
                
                靜態(tài)局部變量屬于靜態(tài)存儲方式,它具有以下特點(diǎn):
                (1)靜態(tài)局部變量在函數(shù)內(nèi)定義,但不象自動變量那樣,當(dāng)調(diào)用時就存在,退出函數(shù)時就消失。靜態(tài)局部變量始終存在著,也就是說它的生存期為整個源程序。

                (2)靜態(tài)局部變量的生存期雖然為整個源程序,但是其作用域仍與自動變量相同,即只能在定義該變量的函數(shù)內(nèi)使用該變量。退出該函數(shù)后, 盡管該變量還繼續(xù)存在,但不能使用它。

                (3)允許對構(gòu)造類靜態(tài)局部量賦初值。在數(shù)組一章中,介紹數(shù)組初始化時已作過說明。若未賦以初值,則由系統(tǒng)自動賦以0值。

                (4)對基本類型的靜態(tài)局部變量若在說明時未賦以初值,則系統(tǒng)自動賦予0值。而對自動變量不賦初值,則其值是不定的。 根據(jù)靜態(tài)局部變量的特點(diǎn), 可以看出它是一種生存期為整個源程序的量。雖然離開定義它的函數(shù)后不能使用,但如再次調(diào)用定義它的函數(shù)時,它又可繼續(xù)使用, 而且保存了前次被調(diào)用后留下的值。 因此,當(dāng)多次調(diào)用一個函數(shù)且要求在調(diào)用之間保留某些變量的值時,可考慮采用靜態(tài)局部變量。雖然用全局變量也可以達(dá)到上述目的,但全局變量有時會造成意外的副作用,因此仍以采用局部靜態(tài)變量為宜。
                [例5.15]main()
                {
                int i;
                void f(); /*函數(shù)說明*/
                for(i=1;i<=5;i++)
                f(); /*函數(shù)調(diào)用*/
                }
                void f() /*函數(shù)定義*/
                {
                auto int j=0;
                ++j;
                printf("%d\n",j);
                }
                程序中定義了函數(shù)f,其中的變量j 說明為自動變量并賦予初始值為0。當(dāng)main中多次調(diào)用f時,j均賦初值為0,故每次輸出值均為1,F(xiàn)在把j改為靜態(tài)局部變量,程序如下:
                main()
                {
                int i;
                void f();
                for (i=1;i<=5;i++)
                f();
                }
                void f()
                {
                static int j=0;
                ++j;
                printf("%d\n",j);
                }
                void f()
                {
                static int j=0;
                ++j;
                printf("%d/n",j);
                }
                由于j為靜態(tài)變量,能在每次調(diào)用后保留其值并在下一次調(diào)用時繼續(xù)使用,所以輸出值成為累加的結(jié)果。讀者可自行分析其執(zhí)行過程。

                2.靜態(tài)全局變量
                全局變量(外部變量)的說明之前再冠以static 就構(gòu)成了靜態(tài)的全局變量。全局變量本身就是靜態(tài)存儲方式, 靜態(tài)全局變量當(dāng)然也是靜態(tài)存儲方式。 這兩者在存儲方式上并無不同。這兩者的區(qū)別雖在于非靜態(tài)全局變量的作用域是整個源程序, 當(dāng)一個源程序由多個源文件組成時,非靜態(tài)的全局變量在各個源文件中都是有效的。 而靜態(tài)全局變量則限制了其作用域, 即只在定義該變量的源文件內(nèi)有效, 在同一源程序的其它源文件中不能使用它。由于靜態(tài)全局變量的作用域局限于一個源文件內(nèi),只能為該源文件內(nèi)的函數(shù)公用, 因此可以避免在其它源文件中引起錯誤。從以上分析可以看出, 把局部變量改變?yōu)殪o態(tài)變量后是改變了它的存儲方式即改變了它的生存期。把全局變量改變?yōu)殪o態(tài)變量后是改變了它的作用域, 限制了它
                的使用范圍。因此static 這個說明符在不同的地方所起的作用是不同的。應(yīng)予以注意。

                四、寄存器變量

                上述各類變量都存放在存儲器內(nèi), 因此當(dāng)對一個變量頻繁讀寫時,必須要反復(fù)訪問內(nèi)存儲器,從而花費(fèi)大量的存取時間。 為此,C語言提供了另一種變量,即寄存器變量。這種變量存放在CPU的寄存器中,使用時,不需要訪問內(nèi)存,而直接從寄存器中讀寫, 這樣可提高效率。寄存器變量的說明符是register。 對于循環(huán)次數(shù)較多的循環(huán)控制變量及循環(huán)體內(nèi)反復(fù)使用的變量均可定義為寄存器變量。
                [例5.16]求∑200i=1imain()
                {
                register i,s=0;
                for(i=1;i<=200;i++)
                s=s+i;
                printf("s=%d\n",s);
                }
                本程序循環(huán)200次,i和s都將頻繁使用,因此可定義為寄存器變量。
                對寄存器變量還要說明以下幾點(diǎn):

                1. 只有局部自動變量和形式參數(shù)才可以定義為寄存器變量。因?yàn)榧拇嫫髯兞繉儆趧討B(tài)存儲方式。凡需要采用靜態(tài)存儲方式的量不能定義為寄存器變量。

                2. 在Turbo C,MS C等微機(jī)上使用的C語言中, 實(shí)際上是把寄存器變量當(dāng)成自動變量處理的。因此速度并不能提高。 而在程序中允許使用寄存器變量只是為了與標(biāo)準(zhǔn)C保持一致。3. 即使能真正使用寄存器變量的機(jī)器,由于CPU 中寄存器的個數(shù)是有限的,因此使用寄存器變量的個數(shù)也是有限的。

            上一頁  1 2 3 4 5 6 7 8 9 10  ... 下一頁  >> 
            文章搜索
            版權(quán)聲明:如果計(jì)算機(jī)等級考試網(wǎng)所轉(zhuǎn)載內(nèi)容不慎侵犯了您的權(quán)益,請與我們聯(lián)系800@eeeigo.com,我們將會及時處理。如轉(zhuǎn)載本計(jì)算機(jī)等級考試網(wǎng)內(nèi)容,請注明出處。