• <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 深邃者 閱讀(380) 評論(0)  編輯 收藏 引用

            久久中文字幕人妻丝袜| 要久久爱在线免费观看| 国内精品久久久久影院优 | 久久综合五月丁香久久激情| 中文字幕人妻色偷偷久久| 久久这里只有精品18| 国产精品久久久天天影视香蕉 | 婷婷久久五月天| 亚洲午夜无码AV毛片久久| 久久久噜噜噜久久熟女AA片| 精品久久久久久无码免费| 久久久久久精品成人免费图片| 囯产精品久久久久久久久蜜桃 | 亚洲午夜久久久久久久久电影网| 2021久久国自产拍精品| 久久99精品久久久久久不卡| 久久久久99这里有精品10| 久久久国产精品网站| 亚洲国产精品无码久久青草| 日本三级久久网| 亚洲国产精品18久久久久久| 久久久久久国产精品免费免费| 国产精品欧美久久久天天影视| 中文字幕精品久久| 久久99精品综合国产首页| 老男人久久青草av高清| 久久久受www免费人成| 国产69精品久久久久9999| 久久99热只有频精品8| 久久久老熟女一区二区三区| 久久这里的只有是精品23| 欧美激情精品久久久久久| 一本久久久久久久| 青青草国产成人久久91网| 久久综合九色综合精品| 久久99国产精品久久99| 国产精品久久久久aaaa| 久久精品www| 观看 国产综合久久久久鬼色 欧美 亚洲 一区二区| 伊人久久大香线焦AV综合影院| 国产A级毛片久久久精品毛片|