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

            單鏈DNA

            換了個地址:http://www.cnblogs.com/vizhen/

             

            引用

            引用是一個目標變量的別名。對引用的一切操作和對變量的直接操作是一樣的。引用的聲明如下:

            【數據類型】【&】【定義的引用名稱】=【目標變量名】;

            引用不是一種數據類型,并不占存儲單元,沒有數組的引用。

            引用的作用:

            1. 可用做函數參數。引用作為參數傳遞給函數時,在內存中并沒有產生變量實體的副本,它只是源目標變量的一個別名。
            2. 常引用。

              const 【數據類型標識符】&【引用名】=【目標變量名】;

              char x=1;
              const char &rx=x;
              rx=2; //錯誤:rx是只讀的
              x=2; //正確
              這樣的好處是可以不用擔心變量的值被別名以為的改掉。
            3. 引用作為函數返回值。

              【數據類型】&【函數名】(形參列表){函數體}
              實例:
            #include<iostream>
            using namespace std;
            int temp; //全局變量temp; 
            int f1(int x)
            {
                temp=(int)(x*x);
                return temp;   
            }
            
            int &f2(int x)
            {
                temp=(int)(x*x);
                return temp;
            }
            
            int main()
            {
                int a=f1(5);//系統生產成返回值的副本 
                int b=f2(5);//系統不生成返回值的副本,可以從被調函數中返回一個全局變量的引用 
                int &c=f2(5);//系統不生成返回值的副本,可以從被調函數中返回一個全局變量的引用 
                
                cout<<a<<endl;
            
                cout<<b<<endl;
                cout<<c<<endl;
                getchar();
            } 
            

            注意:不能返回局部變量的值。局部變量在被函數調用返回后就被銷毀。那么它返回的引用所指向的內存已經沒有任何意義,運行時會出現不可預知的錯誤。

            #include<iostream>
            using namespace std;
            
            int &f1(int x)
            {
                int tmp;
                tmp=x;
                cout<<"In f1:"<<endl;
                cout<<"&tmp is:"<<&tmp<<endl;
                cout<<"tmp is:"<<tmp<<endl<<endl;
                return tmp;
            }
            
            int main()
            {
                int &a=f1(5);
                a=9;
                cout<<"In main:"<<endl;
                cout<<"&a is:"<<&a<<endl;
                cout<<"a is:"<<a<<endl;
                getchar();
                return 0;
            }
            

            結果:

            image

            在f1結束后tmp的內存就已經釋放,a是tmp的別名雖然還是指向了那段內存,但是已經沒有任何意義了。

            注意:

            1. 不能返回函數內部new分配的內存引用。因為被函數返回的引用只是作為臨時變量出現的,沒有被賦予一個實際的變量空間,所以這個引用所指向的空間就無法釋放,造成內存泄露。
            2. 可以返回類成員的引用,但最好是const。

            posted on 2011-02-04 22:52 Geek.tan 閱讀(142) 評論(0)  編輯 收藏 引用 所屬分類: C++

            導航

            統計

            公告

            coding是我的寂寞,我是誰的寂寞

            隨筆分類(40)

            隨筆檔案(48)

            搜索

            積分與排名

            最新評論

            評論排行榜

            欧美性猛交xxxx免费看久久久| 亚洲国产小视频精品久久久三级| 亚洲精品高清国产一线久久| 久久笫一福利免费导航| 欧美亚洲色综久久精品国产| 久久精品国产免费| 亚洲午夜精品久久久久久浪潮| 精品久久久无码21p发布| 久久综合欧美成人| 国产69精品久久久久APP下载 | 国产成人无码精品久久久久免费 | 精品久久久久久无码中文字幕| 久久亚洲AV无码西西人体| 欧美精品久久久久久久自慰| 91久久精品国产成人久久| 亚洲级αV无码毛片久久精品| 久久国产成人亚洲精品影院| 人妻无码αv中文字幕久久琪琪布 人妻无码久久一区二区三区免费 人妻无码中文久久久久专区 | 国产精品久久久久久久人人看| 久久影视综合亚洲| 久久ZYZ资源站无码中文动漫| 久久精品青青草原伊人| 精品精品国产自在久久高清| 狠狠色噜噜色狠狠狠综合久久| 国内精品免费久久影院| 青青草原1769久久免费播放| 奇米综合四色77777久久| 国内精品久久久久影院老司 | 久久综合久久鬼色| 青青青国产成人久久111网站| 亚洲综合熟女久久久30p| 国产精品乱码久久久久久软件 | 性欧美大战久久久久久久| 97超级碰碰碰碰久久久久| 久久电影网一区| 国产精品久久久久久久久| 久久久久久久久久久久中文字幕| 精品久久久久久无码不卡| 狠狠色丁香久久婷婷综合图片| 欧美国产成人久久精品| 2020国产成人久久精品|