• <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 肥仔 閱讀(1954) 評論(1)  編輯 收藏 引用 所屬分類: C++ 基礎

            評論

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

            我頂你!轉載的文章寫的很好,“因其丑陋,見諒” 帥氣!
            2009-10-14 17:08 | blocker
            久久精品国产99久久无毒不卡 | 中文字幕久久亚洲一区| www.久久精品| 国产精品免费久久久久影院| 综合久久给合久久狠狠狠97色| 色天使久久综合网天天| 久久久久人妻精品一区| 久久天天日天天操综合伊人av | 一本伊大人香蕉久久网手机| 久久有码中文字幕| 国产精品一区二区久久不卡| 亚洲色欲久久久久综合网| 久久综合狠狠色综合伊人| 97视频久久久| 久久精品国产黑森林| 久久精品国产网红主播| 久久综合九色综合网站| 久久久久国产日韩精品网站| 99久久99久久久精品齐齐| 久久精品卫校国产小美女| 久久亚洲国产成人精品无码区| 91精品国产91久久久久福利| 伊人久久精品无码av一区| 蜜臀久久99精品久久久久久| 久久免费美女视频| 久久99国产精一区二区三区| 久久精品aⅴ无码中文字字幕不卡 久久精品成人欧美大片 | 亚洲精品乱码久久久久久自慰| 日韩久久无码免费毛片软件| 久久久中文字幕日本| 久久九九亚洲精品| 精品综合久久久久久97超人| 久久影院综合精品| 久久天天躁狠狠躁夜夜躁2O2O| 久久久一本精品99久久精品88| 漂亮人妻被中出中文字幕久久| 亚洲精品国产自在久久| 2021久久精品免费观看| 2021国产精品午夜久久| 亚洲乱码中文字幕久久孕妇黑人 | 国内精品久久久久影院薰衣草|