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

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

            inline函數(shù)包涵static變量,調(diào)用時是否同樣會有多份拷貝?

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

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

            內(nèi)聯(lián)函數(shù)在調(diào)用時是用函數(shù)體中的內(nèi)容代替函數(shù)調(diào)用,如果在多個地方使用了static_test(),就會有多條static   int   i=0;的語句,因?yàn)樗鼈兪且粯拥?,編譯器只會保留第一個,其余忽略。Top

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

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

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

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

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

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

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

            static變量不是放在棧里的,是放在靜態(tài)數(shù)據(jù)區(qū).和全局變量存放在一起.  
              不能將它和局部變量混為一談Top

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

            static只初始化一次Top

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

            static放在全局?jǐn)?shù)據(jù)區(qū)Top

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

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

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

                更哪個inline沒關(guān)系吧   ,    
              inline   主要是為了省去調(diào)用函數(shù)時   對主掉函數(shù)的現(xiàn)場和返回地址的保存等   ,來減少調(diào)用函數(shù)的開銷  
              并且   是由編譯器決定是否將用戶定義的內(nèi)聯(lián)函數(shù)作為真正的內(nèi)聯(lián)函數(shù)處理,所以它應(yīng)該不回改變  
              調(diào)用函數(shù)的一些東西吧   我也說不清   也就說應(yīng)該和非內(nèi)聯(lián)函數(shù)效果是一樣的    
              另外    
              //關(guān)于靜態(tài)變量  
              #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   是預(yù)期結(jié)果  
              而  
              int   main()  
              {  
                      {  
                    static   int   a   =   0;  
                    cout   <<     "a   is"   <<   ++a   <<endl;  
                        }  
                        {  
                  static   int   a   =   0;  
                    cout   <<     "a   is"   <<   ++a   <<endl;  
                        }  
              return   0;  
              }  
              輸出的是   1   ,1  
              這一點(diǎn)可以看出   調(diào)用含有靜態(tài)變量的函數(shù)并不像調(diào)用一般的函數(shù)   一般的函數(shù)可以直接把  
              代碼貼過去   結(jié)果是一樣的   而上面的結(jié)果不一樣  
            Top

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

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

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

            int     Rand()  
              //生成SIZE位的隨機(jī)數(shù)0<(SIZE<10)  
              //返回一個各位數(shù)都不相同的隨機(jī)數(shù)  
              {  
                      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((基礎(chǔ)決定你能走多遠(yuǎn))--英語菜才是真的菜)回復(fù)于 2005-08-28 00:47:08 得分 0

            發(fā)錯地方   (=_=)  

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

            評論

            # re: inline函數(shù)包涵static變量,調(diào)用時是否同樣會有多份拷貝?  回復(fù)  更多評論   

            我頂你!轉(zhuǎn)載的文章寫的很好,“因其丑陋,見諒” 帥氣!
            2009-10-14 17:08 | blocker
            人妻中文久久久久| 久久无码人妻一区二区三区| 国内精品久久久久久久久电影网| 97久久精品人人做人人爽| 久久成人影院精品777| 久久水蜜桃亚洲av无码精品麻豆| 亚洲精品国产第一综合99久久| 久久国产成人精品国产成人亚洲| 久久婷婷国产麻豆91天堂| 9191精品国产免费久久| 国产69精品久久久久99| 狠狠综合久久综合中文88| 精品国产婷婷久久久| 亚洲国产天堂久久久久久| 亚洲国产小视频精品久久久三级| 亚洲欧美一级久久精品| 久久亚洲日韩看片无码| 久久亚洲精品中文字幕| 久久综合九色综合精品| 久久久久久av无码免费看大片| 色狠狠久久综合网| 无码专区久久综合久中文字幕| 996久久国产精品线观看| 国产毛片久久久久久国产毛片| 亚洲国产视频久久| 久久精品国产亚洲av高清漫画| 久久精品国产免费一区| 色婷婷久久久SWAG精品| 欧洲成人午夜精品无码区久久| 一级做a爱片久久毛片| 久久久无码精品亚洲日韩京东传媒 | 久久笫一福利免费导航| 色8久久人人97超碰香蕉987| 91精品日韩人妻无码久久不卡| 伊人久久国产免费观看视频| 国产精品久久永久免费| 欧洲性大片xxxxx久久久| 久久精品中文騷妇女内射| 热综合一本伊人久久精品| 久久99国产精一区二区三区| 午夜精品久久久久久久无码|