在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

c++引用詳細解說1

jf_78858299 ? 來源:阿Q正磚 ? 作者:阿Q ? 2023-02-15 09:40 ? 次閱讀

1、基本概念

百度百科是這樣解釋的:C++C語言的繼承,它可進行過程化程序設計,又可以進行以抽象數據類型為特點的基于對象的程序設計,還可以進行以繼承和多態為特點的面向對象的程序設計。

引用(reference)就是C++對C語言的重要擴充。引用就是某一變量(目標)的一個別名,對引用的操作與對變量直接操作完全一樣,編譯器不會為引用變量開辟內存空間,它和它引用的變量共用同一塊內存空間。引用的聲明方法:類型標識符 &引用名=目標變量名。

別名,又可以說是外號,代稱,比如水滸傳里幾乎是別名最多的地方。林沖,在家稱為"林教頭",江湖上人稱"豹子頭"。教頭和豹子頭就是林沖的別名。

2、區分

&就是引用,但是&這個操作符和取地址&操作符是重疊的,所以它們需要不同的場景規范:

當 &b單獨存在時,這時就代表取地址,為取出變量的地址。

但是如果這樣:

int main(){            int a = 10;            int& b = a; // 引用            int* p = &b; // 取地址            return 0;}

當 & 位于類型和變量名之間時,為引用。

3、本質

調試查看一下 a 和 b 的關系:

圖片

我們發現a和b的值不僅相等,連它的地址也是相同的。這就可以說明,b就是a ,但是在語法層面上,這里b并不是開辟的新空間,而是對原來的a取了一個新名稱,叫做b。

就好比林沖被叫做豹子頭一樣,林沖還是林沖,豹子頭也是它;而a就是a,但是b也是 a 。

圖片

而如果這時候對 a 或 b 任意一個修改,那么 a 和 b 都會發生修改。

圖片

4、特性

引用有以下3點是必須注意的!!!

  1. 引用必須在定義時初始化

圖片

引用是取別名,所以在定義的時候必須明確是誰的別名。

  1. 一個變量可以有多個引用

就和林沖一樣,他可以叫豹子頭也可以叫林教頭,這都是它。

所以一個變量也可以有多個別名。

圖片

而對于一個起過別名的變量,對它的別名取別名也是可以的。

圖片

而從根本上看,就可以這么理解:

圖片

本質上還是一個變量。

但是別名不能和正式名字沖突,就比如取過別名,就不能定義和別名重名的變量,即使它們的類型并不相同。

圖片

所以說這里的報錯信息并不準確,實際上是命名沖突。

  1. 引用一旦引用一個實體,就不能引用其他實體
int main(){    int a = 10;            int& b = a;            int c = 20;           b = c;            return 0;}

對于下一組代碼,有什么含義?

  • 讓 b 變成 c 的別名?
  • 還是把 c 賦值給 b ?

這里的代碼意思是第二個含義,就是賦值,我們調試看看:

圖片

調試我們也可以看到,我們只是把 c 的值賦值給了 b ,b 的地址還是沒變的 ,并且 a 的值也改變了。

這就說明引用一旦引用某一個實體,就不能引用其他的實體,引用是不會發生改變的。

因為它們是完全獨立的兩個變量,僅有的關聯也只是值相等,改變 b 并不能影響 c ,但是此時 b 是 a 的別名,所以改變 b 就會影響 a 。

圖:

圖片

但是對于指針,則是截然不同的:

int main()
{        
    int a = 10;        
    int c = 20;        
    int* p = &a;        
    p = &c;        
    return 0;
}
對于指針來說,指針就可以時刻修改:

圖片

p原本指向 a ,現在指向 c.

但是引用也有局限性,因為引用之后的變量是不可修改引用的,比如鏈表,節點是要不斷更替迭代的,所以還需要指針配合,C++才可以寫出一個鏈表。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • C語言
    +關注

    關注

    180

    文章

    7604

    瀏覽量

    136827
  • C++
    C++
    +關注

    關注

    22

    文章

    2108

    瀏覽量

    73651
  • 面向對象
    +關注

    關注

    0

    文章

    64

    瀏覽量

    9985
收藏 人收藏

    評論

    相關推薦

    c引用和指針的區別

    is derived-declarator-type-list cv-qualifier-seq pointer to T。 The cv-qualifiers apply to the pointer and not to the object pointer to. 摘自《ANSI C++ Standard》
    發表于 09-27 15:19 ?1次下載
    <b class='flag-5'>c</b><b class='flag-5'>引用</b>和指針的區別

    Visual C++教程之C++的語言資料概述免費下載

    本文檔詳細介紹的是Visual C++教程之C++的語言資料概述免費下載主要內容包括了:1CC++
    發表于 02-15 15:59 ?3次下載
    Visual <b class='flag-5'>C++</b>教程之<b class='flag-5'>C++</b>的語言資料概述免費下載

    C++程序設計教程之數據類型的詳細資料說明

    本文檔的主要內容詳細介紹的是C++程序設計教程之數據類型的詳細資料說明。1. 整型 ( int Types ) , 2.整型子類 ( sub-int Types ) , 3.浮點型
    發表于 02-21 17:18 ?3次下載
    <b class='flag-5'>C++</b>程序設計教程之數據類型的<b class='flag-5'>詳細</b>資料說明

    C++程序設計教程之C++的初步知識的詳細資料說明

    C++程序設計教程之C++的初步知識的詳細資料說明包括了:1. 從CC++,2 . 最簡單的
    發表于 03-14 14:48 ?31次下載
    <b class='flag-5'>C++</b>程序設計教程之<b class='flag-5'>C++</b>的初步知識的<b class='flag-5'>詳細</b>資料說明

    C++程序設計教程之數組的詳細資料說明

    本文檔詳細介紹的是C++程序設計教程之數組的詳細資料說明主要內容包括了:1. 數組的概念,2. 一維數組的定義和引用,3. 二維數組的定義和
    發表于 03-14 14:48 ?10次下載
    <b class='flag-5'>C++</b>程序設計教程之數組的<b class='flag-5'>詳細</b>資料說明

    C++程序設計教程之指針的詳細資料說明

    本文檔詳細介紹的是C++程序設計教程之指針的詳細資料說明主要內容包括了:1. 指針的概念,2. 變量與指針,3. 數組與指針,4. 字符串與指針,5. 函數與指針,6. 返回指針值的函
    發表于 03-14 16:04 ?7次下載
    <b class='flag-5'>C++</b>程序設計教程之指針的<b class='flag-5'>詳細</b>資料說明

    C++程序設計教程之C++工具的詳細資料說明

    本文檔的詳細介紹的是C++程序設計教程之C++工具的詳細資料說明主要內容包括了:1. 異常處理,2. 命名空間,3. 使用早期的函數庫
    發表于 03-14 16:39 ?4次下載
    <b class='flag-5'>C++</b>程序設計教程之<b class='flag-5'>C++</b>工具的<b class='flag-5'>詳細</b>資料說明

    C++引用的使用場景

    C++引用的使用場景
    的頭像 發表于 06-29 15:18 ?4068次閱讀
    <b class='flag-5'>C++</b>:<b class='flag-5'>引用</b>的使用場景

    C++中的const和引用的討論

    今天給大家分享一下這段時間學習c++的總結學習:c++里面的const關鍵字和引用
    的頭像 發表于 12-24 15:35 ?852次閱讀

    C語言和C++的特點與用法詳細說明

    本文檔的主要內容詳細介紹的是C語言和C++的特點與用法詳細說明。
    的頭像 發表于 12-26 10:58 ?4421次閱讀

    C++基礎語法中的引用、封裝和多態

    本期是C++基礎語法分享的第六節,今天給大家來分享一下: (1引用; (2)宏; (3)成員初始化列表; (4)封裝; (5)繼承; (6)多態; 引用 左值
    的頭像 發表于 09-12 09:58 ?1315次閱讀

    c++引用詳細解說2

    C++C語言的繼承,它可進行過程化程序設計,又可以進行以抽象數據類型為特點的基于對象的程序設計,還可以進行以繼承和多態為特點的面向對象的程序設計。
    的頭像 發表于 02-15 09:43 ?508次閱讀
    <b class='flag-5'>c++</b><b class='flag-5'>引用</b><b class='flag-5'>詳細</b><b class='flag-5'>解說</b>2

    c++引用詳細解說3

    C++C語言的繼承,它可進行過程化程序設計,又可以進行以抽象數據類型為特點的基于對象的程序設計,還可以進行以繼承和多態為特點的面向對象的程序設計。
    的頭像 發表于 02-15 09:43 ?540次閱讀
    <b class='flag-5'>c++</b><b class='flag-5'>引用</b><b class='flag-5'>詳細</b><b class='flag-5'>解說</b>3

    c++引用詳細解說4

    C++C語言的繼承,它可進行過程化程序設計,又可以進行以抽象數據類型為特點的基于對象的程序設計,還可以進行以繼承和多態為特點的面向對象的程序設計。
    的頭像 發表于 02-15 09:43 ?524次閱讀
    <b class='flag-5'>c++</b><b class='flag-5'>引用</b><b class='flag-5'>詳細</b><b class='flag-5'>解說</b>4

    C++引用和指針

    之前的文章我們已經介紹了C++中的基本類型如int,bool和double等,除了基本類型C++還有一些更復雜的數據類型復合類型,所謂的復合類型就是通過其他類型定義的類型,本篇文章我們將會著重介紹C++的復合類型
    的頭像 發表于 03-17 14:00 ?636次閱讀
    主站蜘蛛池模板: 美女扒开尿囗给男生桶爽| 一级毛片免费全部播放| 性欧美zoz0另类xxxx| 久久久综合色| 欧美午夜精品一区二区三区| 在线看av网址| 日韩精品另类天天更新影院| 一级特黄a免费大片| 日韩一级在线观看| a欧美在线| 69女poren18女| 日本.www| 天堂中文网| 国产巨大bbbb俄罗斯| 国产一区国产二区国产三区| 男人的天堂免费网站| 欧美黄色录象| 在线 你懂| 国产激烈无遮挡免费床戏视频 | 国产精品japanese人妖| 正在播放国产乱子伦视频| 国内精品一区二区在线观看| 成在线人永久免费播放视频| 天堂网2014| 午夜亚洲视频| 国产精品久久久久免费| 婷婷色在线观看| 在线女同免费观看网站| 日本在线视频不卡| 久久人人精品| 欧美极品第一页| 欧美一欧美一区二三区性| 欧美在线bdsm调教一区| 亚洲天堂最新地址| 一本到中文字幕高清不卡在线| 亚洲成年网站| 国模沟沟一区二区三区| 黄色网免费观看| 久久婷婷成人综合色| jiucao在线观看精品| 任你操免费视频|