• <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
            久久久91人妻无码精品蜜桃HD | 2021少妇久久久久久久久久| 久久人人爽人人爽人人片AV麻烦| 亚洲乱码精品久久久久..| 国产99精品久久| 午夜精品久久久久9999高清| 色诱久久久久综合网ywww| 色综合久久久久| 国内精品九九久久精品| 国产成人精品久久| 综合人妻久久一区二区精品| 国产巨作麻豆欧美亚洲综合久久| 久久人人爽人人爽人人片AV不| 国产婷婷成人久久Av免费高清| 亚洲午夜无码AV毛片久久| 久久亚洲国产中v天仙www| 久久精品亚洲AV久久久无码| 91精品国产91久久久久久蜜臀| 久久人人爽人人爽人人av东京热| 伊人色综合久久天天| 蜜臀av性久久久久蜜臀aⅴ麻豆 | 2020久久精品国产免费| 无码精品久久一区二区三区| 蜜桃麻豆www久久| 欧洲人妻丰满av无码久久不卡| 久久久久国产| 精品久久久久一区二区三区| 久久天堂电影网| 狠狠色丁香婷婷综合久久来 | 久久精品国产亚洲AV不卡| 久久不见久久见免费影院www日本| 久久亚洲精品成人AV| 国产69精品久久久久9999APGF| 少妇无套内谢久久久久| 久久经典免费视频| 久久精品国产AV一区二区三区| 偷偷做久久久久网站| 无码人妻精品一区二区三区久久| 97久久婷婷五月综合色d啪蜜芽| 久久婷婷人人澡人人| 国产精品综合久久第一页 |