• <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

            導航

            <2006年9月>
            272829303112
            3456789
            10111213141516
            17181920212223
            24252627282930
            1234567

            統計

            常用鏈接

            留言簿(2)

            隨筆檔案

            文章檔案

            搜索

            最新評論

            閱讀排行榜

            評論排行榜

            關于局部與全局及靜態的關系

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

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

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

            久久久国产亚洲精品| 国产精品日韩欧美久久综合| 伊色综合久久之综合久久| 伊人久久成人成综合网222| 久久久久久久国产免费看| 亚洲美日韩Av中文字幕无码久久久妻妇 | 亚洲精品无码久久千人斩| 久久99精品久久久久久动态图| 久久综合综合久久97色| 合区精品久久久中文字幕一区| 亚洲国产精品无码久久久不卡| 久久精品www| 久久天天躁狠狠躁夜夜躁2014| 国内精品伊人久久久久| 欧美精品福利视频一区二区三区久久久精品| 国内精品久久久久影院老司| 久久国产精品一国产精品金尊| 四虎久久影院| 国产精品一久久香蕉产线看 | 欧洲成人午夜精品无码区久久| 18岁日韩内射颜射午夜久久成人| 久久精品国产色蜜蜜麻豆| 国产精品免费久久久久久久久| av无码久久久久不卡免费网站 | 久久综合亚洲鲁鲁五月天| 久久青青草原国产精品免费| 久久婷婷五月综合国产尤物app | 久久精品国产第一区二区三区| 国产精品99久久久久久董美香| 99久久777色| 久久久久亚洲精品日久生情 | 99久久精品免费看国产一区二区三区| 狠狠干狠狠久久| 久久丫精品国产亚洲av| 色欲综合久久躁天天躁蜜桃 | 99久久超碰中文字幕伊人| 囯产极品美女高潮无套久久久| 午夜精品久久久久久久无码| 久久九色综合九色99伊人| 无码任你躁久久久久久| 日韩AV毛片精品久久久|