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

            woaidongmao

            文章均收錄自他人博客,但不喜標題前加-[轉貼],因其丑陋,見諒!~
            隨筆 - 1469, 文章 - 0, 評論 - 661, 引用 - 0
            數據加載中……

            inline函數包涵static變量,調用時是否同樣會有多份拷貝?

            inline   int   static_test()  
              {  
                    static   int   i   =0;  
                    ...  
              }  
              inline   代表編譯時代碼拷貝,也就有多份副本了,但本人在VC中測試,i只有一份副本,它是怎樣實現的呢? 問題點數:20、回復次數:12Top

            1 樓megaboy(飛天御劍流之殺神一刀斬)回復于 2005-08-26 23:40:10 得分 4

            內聯函數在調用時是用函數體中的內容代替函數調用,如果在多個地方使用了static_test(),就會有多條static   int   i=0;的語句,因為它們是一樣的,編譯器只會保留第一個,其余忽略。Top

            2 樓yeahsuetsing(破刀)回復于 2005-08-26 23:42:01 得分 2

            代碼拷貝不一定是c代碼的拷貝吧,可以是編譯后的匯編代碼的拷貝。而函數在代碼段,變量則在數據段。拷貝的只是代碼段中的函數部分。Top

            3 樓Darkay_Lee()回復于 2005-08-26 23:49:13 得分 4

            編譯器給靜態變量安置到數據區就可以了,數據區的初始值就是初始化時候的值,在static函數里面就忽略那個初始化的語句。Top

            4 樓xinxiakk(特亞)回復于 2005-08-26 23:55:47 得分 2

            static   變量有拷貝嗎?  
              我印象里好像沒有的說Top

            5 樓zhouhuahai(道號"虛無")回復于 2005-08-27 09:53:42 得分 4

            static變量不是放在棧里的,是放在靜態數據區.和全局變量存放在一起.  
              不能將它和局部變量混為一談Top

            6 樓zousoft(菜菜鳥的戰斗詩歌)回復于 2005-08-27 12:36:07 得分 0

            static只初始化一次Top

            7 樓jiajun2001(Jagen(嘉俊))回復于 2005-08-27 14:41:10 得分 0

            static放在全局數據區Top

            8 樓yingle2000(音樂天堂)回復于 2005-08-27 16:24:32 得分 0

            如果inline包含變量聲明,編譯器就不會作為inline處理吧?普通函數的static只初始化一次。Top

            9 樓husl(胡少磊)回復于 2005-08-27 22:57:05 得分 4

                更哪個inline沒關系吧   ,    
              inline   主要是為了省去調用函數時   對主掉函數的現場和返回地址的保存等   ,來減少調用函數的開銷  
              并且   是由編譯器決定是否將用戶定義的內聯函數作為真正的內聯函數處理,所以它應該不回改變  
              調用函數的一些東西吧   我也說不清   也就說應該和非內聯函數效果是一樣的    
              另外    
              //關于靜態變量  
              #include<IOSTREAM>  
              using   namespace   std;  
              inline   void   fun()  
              {  
              static   int   a   =   0;  
              cout   <<     "a   is"   <<   ++a   <<endl;  
              }  
              int   main()  
              {  
              fun();  
              fun();  
              return   0;  
              }  
              輸出的   1   ,2   是預期結果  
              而  
              int   main()  
              {  
                      {  
                    static   int   a   =   0;  
                    cout   <<     "a   is"   <<   ++a   <<endl;  
                        }  
                        {  
                  static   int   a   =   0;  
                    cout   <<     "a   is"   <<   ++a   <<endl;  
                        }  
              return   0;  
              }  
              輸出的是   1   ,1  
              這一點可以看出   調用含有靜態變量的函數并不像調用一般的函數   一般的函數可以直接把  
              代碼貼過去   結果是一樣的   而上面的結果不一樣  
            Top

            10 樓husl(胡少磊)回復于 2005-08-27 22:59:08 得分 0

              為啥子   高人能解釋一下嗎?Top

            11 樓SammyLan((基礎決定你能走多遠)--英語菜才是真的菜)回復于 2005-08-28 00:46:39 得分 0

            int     Rand()  
              //生成SIZE位的隨機數0<(SIZE<10)  
              //返回一個各位數都不相同的隨機數  
              {  
                      static   int   ver[SIZE];  
                      static   int   size=SIZE;  
                      static   bool   bInit=false;  
                      if   (!bInit)   {  
                              srand(unsigned(time(0)));  
                              bInit=true;  
                              for   (int   i=0;i<size;++i)   {  
                              ver[i]=i+1;  
                                }  
                        }  
                        if   (!size)   {  
                            size=SIZE;  
                        }  
                        int   i=rand()%size;  
                        int   _Rand=ver[i];  
                        --size;  
                        ver[i]=ver[size];  
                        ver[size]=_Rand;  
                        return   _Rand   ;    
              }  
              這個是最好的   (=_=)Top

            12 樓SammyLan((基礎決定你能走多遠)--英語菜才是真的菜)回復于 2005-08-28 00:47:08 得分 0

            發錯地方   (=_=)  

            posted on 2009-10-14 15:25 肥仔 閱讀(1943) 評論(1)  編輯 收藏 引用 所屬分類: C++ 基礎

            評論

            # re: inline函數包涵static變量,調用時是否同樣會有多份拷貝?  回復  更多評論   

            我頂你!轉載的文章寫的很好,“因其丑陋,見諒” 帥氣!
            2009-10-14 17:08 | blocker
            国内精品久久久久影院老司| 国产精品岛国久久久久| 日本国产精品久久| 超级碰碰碰碰97久久久久| 久久精品国产第一区二区三区| 精品久久久久久亚洲精品 | 久久93精品国产91久久综合| 国产精品99久久不卡| 久久亚洲精品国产亚洲老地址| 亚洲中文字幕无码久久精品1| 久久精品人人做人人爽97| 久久精品亚洲欧美日韩久久| 亚洲伊人久久大香线蕉综合图片| 国产一级持黄大片99久久| 思思久久99热只有频精品66| 久久久青草久久久青草| 久久久久se色偷偷亚洲精品av | 伊人久久综在合线亚洲2019| 欧洲国产伦久久久久久久| 久久精品国产亚洲av水果派| 日韩一区二区三区视频久久| 婷婷久久综合九色综合98| 97久久国产综合精品女不卡| 久久久久国产亚洲AV麻豆| 久久精品国产亚洲沈樵| 久久精品国产亚洲av麻豆色欲| 久久人与动人物a级毛片| 久久精品国产第一区二区| 国内精品伊人久久久久| 精品熟女少妇av免费久久| 国色天香久久久久久久小说| 欧美亚洲国产精品久久久久| 久久久久人妻精品一区三寸蜜桃| 精品国产福利久久久| 国产精品一区二区久久国产| 久久久久亚洲AV无码网站| 奇米综合四色77777久久| 久久精品无码午夜福利理论片| 性做久久久久久久| 2021精品国产综合久久| 国产69精品久久久久777|