• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            road420

            導(dǎo)航

            <2006年10月>
            24252627282930
            1234567
            891011121314
            15161718192021
            22232425262728
            2930311234

            統(tǒng)計(jì)

            常用鏈接

            留言簿(2)

            隨筆檔案

            文章檔案

            搜索

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            關(guān)于局部與全局及靜態(tài)的關(guān)系

            1.在一個(gè)函數(shù)內(nèi)部定義的變量是內(nèi)部變量,它只在本函數(shù)范圍內(nèi)有效,在此函數(shù)外面是不能使用這個(gè)變量,稱之為 "局部變量"。形式參數(shù)也屬于局部變量。在函數(shù)中的一個(gè)程序塊(如某個(gè)復(fù)合語句{...})定義的局部變量只在這個(gè)程序塊中有效,出了程序塊后就無效。
            2.有時(shí)希望函數(shù)中的局部變量的值在函數(shù)調(diào)用之后不消失而保留原值,在下一次該函數(shù)調(diào)用時(shí)該變量已有值,這時(shí)就該制定該局部變量為"靜態(tài)局部變量",用static加以說明。
            3.在函數(shù)之外定義的變量稱之為全局變量,全局變量可以為本文件中其他函數(shù)所共用,其有效范圍為:從定義變量開始到本源文件結(jié)束。如果在定義點(diǎn)之前的函數(shù)想應(yīng)用該全局變量,則應(yīng)該在該函數(shù)中使用關(guān)鍵字 extern作外部變量說明,表示該變量在函數(shù)外部定義在函數(shù)內(nèi)部可以使用它。如果在同一個(gè)源文件中,全局變量和局部變量同名,則在局部變量作用范圍內(nèi),全局變量不起作用。如果在其它文件中要引用該文件的全局變量,則需要在應(yīng)用它的文件中,用extern作說明。
            4.所謂靜態(tài)全局變量,就是希望某些全局變量只限定于被本文件引用,而不被其它文件引用,這時(shí)可以在定義全局變量的時(shí)候在前面加一個(gè)static說明,

            ?5 按存儲(chǔ)區(qū)域分,全局變量、靜態(tài)全局變量和靜態(tài)局部變量都存放在內(nèi)存的靜態(tài)存儲(chǔ)區(qū)域,局部變量存放在內(nèi)存的棧區(qū)。
            ??6?按作用域分,全局變量在整個(gè)工程文件內(nèi)都有效;靜態(tài)全局變量只在定義它的文件內(nèi)有效;靜態(tài)局部變量只在定義它的函數(shù)內(nèi)有效,只是程序僅分配一次內(nèi)存,函數(shù)返回后,該變量不會(huì)消失;局部變量在定義它的函數(shù)內(nèi)有效,但是函數(shù)返回后失效。
            ??7?全局變量和靜態(tài)變量如果沒有手工初始化,則由編譯器初始化為0。局部變量的值不可知。
            8 舉個(gè)例子:
            int a;??/*全局*/
            static int b;??/*靜態(tài)全局*/
            int main()
            {
            }
            這段代碼如果是寫在file.c里面的,那么file2.c就不能調(diào)用b;
            但是file2.c中可以通過聲明外部變量extent a;
            9.靜態(tài)全局變量
              全局變量(外部變量)的說明之前再冠以static 就構(gòu)成了靜態(tài)的全局變量。全局變量本身就是靜態(tài)存儲(chǔ)方式, 靜態(tài)全局變量當(dāng)然也是靜態(tài)存儲(chǔ)方式。 這兩者在存儲(chǔ)方式上并無不同。這兩者的區(qū)別雖在于非靜態(tài)全局變量的作用域是整個(gè)源程序, 當(dāng)一個(gè)源程序由多個(gè)源文件組成時(shí),非靜態(tài)的全局變量在各個(gè)源文件中都是有效的。 而靜態(tài)全局變量則限制了其作用域, 即只在定義該變量的源文件內(nèi)有效, 在同一源程序的其它源文件中不能使用它。由于靜態(tài)全局變量的作用域局限于一個(gè)源文件內(nèi),只能為該源文件內(nèi)的函數(shù)公用, 因此可以避免在其它源文件中引起錯(cuò)誤。從以上分析可以看出, 把局部變量改變?yōu)殪o態(tài)變量后是改變了它的存儲(chǔ)方式即改變了它的生存期。把全局變量改變?yōu)殪o態(tài)變量后是改變了它的作用域, 限制了它
            的使用范圍。因此static 這個(gè)說明符在不同的地方所起的作用是不同的。應(yīng)予以注意。
            10 代碼
            //test.cpp
            #i nclude?<iostream.h>
            extern?int?a;//變量聲明,不是定義
            static?int?b=5;
            void?func1()
            {
            ??cout<<b<<endl<<a<<endl;//結(jié)果為5
            }

            //main.cpp
            int?a;
            int?b=10;
            void?func2()
            {
            ??static?int?i;
            ??i++;
            ??cout<<i<<endl;
            }

            void?func1();

            void?main()
            {
            ??a=20;
            ??func1();
            ??func2();
            ??func2();
            }
            輸出結(jié)果為
            5
            20
            1
            2

            posted on 2006-09-10 12:11 深邃者 閱讀(389) 評(píng)論(0)  編輯 收藏 引用


            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            人妻精品久久久久中文字幕一冢本| 99久久无码一区人妻| AV无码久久久久不卡蜜桃| 亚洲国产小视频精品久久久三级| 久久免费大片| 国产精品久久久久9999| 久久高潮一级毛片免费| 亚洲中文字幕久久精品无码APP| AV无码久久久久不卡网站下载 | 国产精品美女久久久久av爽| 九九久久精品国产| 色8久久人人97超碰香蕉987| 94久久国产乱子伦精品免费| 成人久久免费网站| 亚洲精品国精品久久99热| 国产精品久久99| 国产A三级久久精品| 欧美午夜A∨大片久久| 国产精品久久免费| 亚洲精品乱码久久久久久按摩 | 久久精品国产2020| 国产日韩久久免费影院| 狠狠88综合久久久久综合网| 久久精品中文字幕大胸| 久久www免费人成精品香蕉| 久久久免费精品re6| 久久丫忘忧草产品| 久久久久国产日韩精品网站| 亚洲一本综合久久| 99久久成人国产精品免费| 日韩乱码人妻无码中文字幕久久 | 无码人妻久久久一区二区三区| 日韩欧美亚洲综合久久影院Ds| 欧美精品一区二区精品久久| 性色欲网站人妻丰满中文久久不卡 | 久久亚洲国产成人影院网站| 亚洲一本综合久久| 国内精品久久久久久久影视麻豆| 91精品国产91久久| 日日狠狠久久偷偷色综合免费 | 女同久久|