最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++ 中引用與指針的區(qū)別實(shí)例詳解

 更新時(shí)間:2017年06月26日 15:08:38   作者:ab198604  
這篇文章主要介紹了C++ 中引用與指針的區(qū)別實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下

C++ 中引用與指針的區(qū)別實(shí)例詳解

引用是從C++才引入的,在C中不存在。為了搞清楚引用的概念,得先搞明白變量的定義及引用與變量的區(qū)別,變量的要素一共有兩個(gè):名稱與空間。

        引用不是變量,它僅僅是變量的別名,沒有自己獨(dú)立的空間,它只符合變量的“名稱”這個(gè)要素,而“空間”這個(gè)要素并不滿足。換句話說,引用需要與它所引用的變量共享同一個(gè)內(nèi)存空間,對引用所做的改變實(shí)際上是對所引用的變量做出修改。并且引用在定義的時(shí)候就必須被初始化。

        參數(shù)傳遞的類型及相關(guān)要點(diǎn):

        1 按值傳遞:形參不能修改實(shí)參的值,實(shí)參要初始化形參,需要分配空間,然后將實(shí)參內(nèi)容copy至形參中。
        2 引用傳遞:實(shí)參初始化形參時(shí)不需要分配空間。
        3 指針傳遞:本質(zhì)還是按值傳遞,在實(shí)參初始化形參時(shí),還是需要分配空間的。如果需要修改指針的地址,單純用指針傳遞也是不行的,必須用**或*&

        下面討論引用的相關(guān)內(nèi)容:

        1 引用的概念
        2 const引用
        3 引用作為參數(shù)傳遞
        4 引用作為函數(shù)返回值
        5 引用與指針的區(qū)別

        1 引用的概念

        牢記下面這幾個(gè)要點(diǎn)即可:

        (1)引用是變量的別名,沒有獨(dú)立的空間
        (2) 引用需要與它引用的變量共享共間
        (3) 對引用所做的改變實(shí)際上是對它所引用的變量做出改變
        (4) 引用在定義的時(shí)候需要進(jìn)行初始化
        (5) 引用一經(jīng)初始化不能重新引用其它變量。

        見如下范例:

int main(void) 
{ 
  int val = 100; 
  //int &refval;<span style="white-space:pre">    </span>//Error,引用必須初始化 
  int &refval = val; 
 
  cout << "val="<< val << endl; 
  refval = 200;  <span style="white-space:pre"> </span>//實(shí)際對val變量進(jìn)行了改變 
  cout << "val=" << val << endl; 
 
  int val2 = 500; 
  refval = val2; <span style="white-space:pre"> </span>//這不代表對refval引用至val2這個(gè)變量, 
        //僅僅代表將val2賦值給refval,即val. 
  cout << "val=" << val << endl; 
 
  return 0; 
} 

        2 const引用

        const引用要點(diǎn)如下:

        (1) 顧名思義,const引用是指向const對象的引用.

        (2) const引用可以引用非const對象,但非const引用不能引用const對象??梢砸娤旅娴暮瘮?shù)例子.

int a = 200; 
const int &ref = a; //OK 
 
const int b = 100; 
int &ref2 = b; //Error,  

        (3) const引用的對象值是常量,不能修改。

const int a = 200; 
const int &ref = a; 
ref = 100; //Error,引用的對象是常量,不能被修改 

        (4) const引用可以引用不同類型的變量,但是將產(chǎn)生一個(gè)臨時(shí)變量。如下:

double a = 3.14; 
const int &ref = a; //OK,它產(chǎn)生的過程是: 
               //int tmp = a; 生成臨時(shí)變量tmp,數(shù)據(jù)可能被截短。 
               //const int &ref = tmp;引用的實(shí)際上是臨時(shí)變量 

        3 引用作為參數(shù)傳遞

        引用作為參數(shù)傳遞是參數(shù)傳遞的其中一種。它在實(shí)參初始化形參時(shí)不需要分配內(nèi)存空間,下面是例子:

void swap(int &a, int &b ) 
{ 
  int tmp = a; 
  a = b; 
  b = tmp; 
} 
 
int main() 
{ 
  int x = 20; 
  int y = 30; 
  swap( x, y ); 
  cout << x << endl; //x = 30; 
  cout << y << endl; //y = 20; 
} 

        4 引用作為函數(shù)返回值

        先列出范例,如下:

int a[] = {1,2,3,4,5,6,7,8,9,0}; 
 
int &index(int i) 
{ 
  return a[i]; 
} 
 
int main() 
{ 
  index(3) = 100; 
  cout << a[3] << endl; //output: 100 
 
} 

        這是引用的另一個(gè)作用,可以將函數(shù)放在賦值運(yùn)算符的左邊。index函數(shù)返回a[]的引用,對引用所做的改變將修改變量自身,所以a[3]被修改成100.     

        5 引用與指針的區(qū)別 

       (1)訪問引用是直接訪問,訪問指針是間接訪問。
        (2)引用是變量的別名,本身不單獨(dú)分配自己的內(nèi)存空間,而指針擁有自己的內(nèi)存空間
        (3) 引用一經(jīng)初始化,不能再引用其它變量,而指針可以
        (4) 盡可以的使用引用,不得已時(shí)使用指針。

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關(guān)文章

  • 解析C++中臨時(shí)對象的產(chǎn)生情況

    解析C++中臨時(shí)對象的產(chǎn)生情況

    臨時(shí)對象的產(chǎn)生和銷毀都是有成本的,都會(huì)影響程序的執(zhí)行性能和效率,所以如果能了解臨時(shí)對象產(chǎn)生的原因,就可以提升程序的性能和效率,下面小編就來和大家聊聊臨時(shí)對象產(chǎn)生的幾種情況吧
    2023-06-06
  • C++實(shí)現(xiàn)單例模式的方法

    C++實(shí)現(xiàn)單例模式的方法

    這篇文章主要為大家介紹了C++實(shí)現(xiàn)單例模式的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-12-12
  • 深入解析C++中多態(tài)性和虛函數(shù)使用原理

    深入解析C++中多態(tài)性和虛函數(shù)使用原理

    這篇文章主要為大家介紹了深入解析C++中多態(tài)性和虛函數(shù)使用原理,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05
  • C++ Primer 標(biāo)準(zhǔn)庫vector示例詳解

    C++ Primer 標(biāo)準(zhǔn)庫vector示例詳解

    該文章主要介紹了C++標(biāo)準(zhǔn)庫中的vector類型,包括其定義、初始化、成員函數(shù)以及常見操作,文章詳細(xì)解釋了如何使用vector來存儲(chǔ)和操作對象集合,并提供了代碼示例來說明vector的使用方法,感興趣的朋友一起看看吧
    2025-03-03
  • C++無try-catch的異常捕獲示例詳解

    C++無try-catch的異常捕獲示例詳解

    這篇文章主要為大家介紹了C++無try-catch的異常捕獲示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • C++中String類常見題目分享

    C++中String類常見題目分享

    這篇文章主要為大家詳細(xì)介紹了一些C++中String類的常見題目,文中的示例代碼講解詳細(xì),對我們掌握C++有一定的幫助,感興趣的小伙伴可以了解一下
    2023-06-06
  • C語言雙向鏈表實(shí)現(xiàn)根據(jù)使用頻率安排元素位置的功能實(shí)例代碼

    C語言雙向鏈表實(shí)現(xiàn)根據(jù)使用頻率安排元素位置的功能實(shí)例代碼

    這篇文章主要介紹了C語言雙向鏈表實(shí)現(xiàn)根據(jù)使用頻率安排元素位置的功能實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • QT自定義之滑動(dòng)開關(guān)

    QT自定義之滑動(dòng)開關(guān)

    這篇文章主要為大家詳細(xì)介紹了QT自定義之滑動(dòng)開關(guān)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-08-08
  • c++利用windows函數(shù)實(shí)現(xiàn)計(jì)時(shí)示例

    c++利用windows函數(shù)實(shí)現(xiàn)計(jì)時(shí)示例

    這篇文章主要介紹了c++利用windows函數(shù)實(shí)現(xiàn)計(jì)時(shí)示例,需要的朋友可以參考下
    2014-05-05
  • C語言實(shí)現(xiàn)可保存的動(dòng)態(tài)通訊錄的示例代碼

    C語言實(shí)現(xiàn)可保存的動(dòng)態(tài)通訊錄的示例代碼

    這篇文章主要為大家詳細(xì)介紹了如何利用C語言實(shí)現(xiàn)一個(gè)簡單的可保存的動(dòng)態(tài)通訊錄,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)C語言有一定幫助,需要的可以參考一下
    2022-07-07

最新評論

昔阳县| 合肥市| 雅江县| 南岸区| 玛沁县| 呼图壁县| 正定县| 海兴县| 石渠县| 象山县| 深州市| 沙洋县| 沾益县| 延长县| 景德镇市| 阿克| 黔东| 利川市| 琼海市| 应城市| 同仁县| 霍州市| 莆田市| 固镇县| 河东区| 新源县| 农安县| 洛浦县| 宿州市| 郸城县| 尼勒克县| 武定县| 那曲县| 兖州市| 济阳县| 秦安县| 揭东县| 伊通| 望奎县| 乌兰县| 琼中|