日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

【C++ 语言】引用 ( 引用简介 | 指针常量 | 常量指针 | 常引用 | 引用参数 | 引用 指针 对比 )

發布時間:2025/6/17 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【C++ 语言】引用 ( 引用简介 | 指针常量 | 常量指针 | 常引用 | 引用参数 | 引用 指针 对比 ) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

        • I . 引用概念
        • II . 引用聲明
        • III . 引用 地址 內存 分析
        • IV . 常引用
        • V . 引用作為參數
        • VI . 引用 與 指針 對比



I . 引用概念



C++ 對 C 擴充 : 引用 ( Reference ) 概念 , 是 C++ 在 C 的基礎上進行的擴充 , 在 C 語言中是沒有引用的 ;

引用本質 : 引用的本質就是為一個變量指定一個別名 , 這個別名與變量的使用方式是相同的 ;



II . 引用聲明



引用聲明 :

① 引用聲明格式 : 類型標識符 &引用別名 = 目標變量 ;

② 示例代碼 :

int a = 0; int &b = a;

③ 引用標識 : 此處的 & 操作不是取地址運算 , 只是起一個引用標識的作用 ;

④ 類型標識符 : int 是類型標識符 , 注意引用的類型標識符要與被引用的變量相同 ;

⑤ 初始化 : 聲明引用的同時 , 必須進行初始化 , 因為引用定義的是一個變量的別名 , 這個變量必須在聲明的時候指定 ;

//引用相當于常量指針 , 必須在聲明的時候就初始化 , 聲明完畢后初始化是無效的 , 編譯執行會報錯 //錯誤示例 , 引用聲明后必須馬上初始化 int a = 0; //聲明的時候必須初始化 , 此時的聲明時錯誤的 int &b; //此時對引用進行賦值就是錯誤的 b = a;

⑥ 引用使用 : 引用聲明后 , 該引用 b 與 a 是等價的 , 凡是可以使用 a 的地方都可以使用 b ;

注意 : 引用聲明完成之后 , 不能講該引用名稱再次聲明為其它變量的名稱 ;



III . 引用 地址 內存 分析



int a = 0; int &b = a;

變量 與其 引用地址相同 : 對 變量 a 和 引用 b 取地址操作 , &a 與 &b 的值是相等的 ;
( 引用名稱 是 變量名稱 的一個別名 )


編譯器實現 : 編譯器將引用實現為 int * const b 指針 , 其指針本身是常量 , 即存儲的地址是不可變的 , 指針指向的內容是可變的 ;
( 既然引用是一個 指針常量 , 說明其還是需要占用內存的 )


const 修飾指針規則 : 左數 右指 (const 在 * 左邊數據是常量, const 在 * 右邊指針是常量);
左數 ( 常量指針 ) : const 出現在 * 左邊時, 指針指向的數據為常量, 指向的數據不可改變;
右指 ( 指針常量 ) : const 出現在 * 右邊時, 指針地址本身是常量, 指針地址不可改變;


指針常量 : 表示該指針本身是一個常量 ;
常量指針 : 表示指向一個常量的指針 ;



IV . 常引用



常引用 :

① 常引用簡介 : 引用本身是一個常量指針 , 指針本身的地址不可改變 , 常引用 在常量指針的基礎上 , 將指向的數據也設置成常量 , 即不能通過該引用修改變量的值 ;
( 引用代表的地址不能修改 <引用自帶屬性> , 常引用 在引用的基礎上 , 指向的數據也不能修改 )


② 常引用聲明格式 : const 類型標識符 &引用別名 = 目標變量 ;


③ 示例代碼 :

int a = 0; const int &b = a;

④ 等價說明 : 上述常引用 b 等價于 const * int * b , 即該常引用的引用本身 , 以及其代表的變量 , 都不能通過該引用進行修改 ;

這里注意 , 不同通過引用進行修改 , 但是可以通過變量名稱 a 進行修改 ;


⑤ 作用及意義 : 使用 引用數據類型 作為 函數參數 , 如果不需要在 函數中 修改該引用變量的值 ( 指針指向的數據的值 ) , 就將該參數聲明為常引用 , 這樣能最大限度增加安全性 , 避免因為誤操作導致不必要的問題出現 ;



V . 引用作為參數



C 語言中的參數 分類 :

① 普通變量參數 : C 語言中 普通變量 ( 非指針變量 ) 作為參數 , 只能進行值傳遞 , 不能通過參數返回結果 ;

② 指針變量參數 : C 語言中 , 如果要讓函數的參數可以將結果返回 , 則必須使用指針作為參數 ;


C++ 中的引用參數 : C++ 在 C 語言基礎上擴展了 引用 數據類型 , 使用引用可以替代上面的指針作為參數的情況 , 使參數具有返回結果的能力 ;


作用及意義 :

① 具有返回值能力 : 使用引用作參數 , 可以將參數當做返回值使用 ;

② 提高參數傳遞效率 : 大型對象作參數時 , 使用引用類型 , 可以提高參數傳遞效率 ;



VI . 引用 與 指針 對比


引用與指針的相同點 : 都具有地址的概念 ;

① 指針 : 指針指向內存中的一塊空間 , 指針變量的內容是一個內存地址 ;

② 引用 : 引用是變量的別名 , 即某塊內存空間的別名 , 相當于一個 指針常量 , 也指向一塊內存空間 ;


引用與指針的不同點 :

① 引用比指針更嚴格 :
引用在定義時必須被初始化 , 而且只能初始化這一次 , 相當于 指針常量 ;
指針 是可變的 , 指針指向的地址 , 以及 地址中的數據 都是可變的 ;
引用的變量值內容可變 , 變量的地址不可變 ;

② 是否可以為空 : 指針可以為空 , 但是引用必須不能為空 , 因其在聲明時必須進行初始化操作 ;

③ sizeof 操作區別 : sizeof ( 引用 ) 獲取的是被引用的變量的大小 ( 隨變量類型變化 ) , sizeof ( 指針 ) 獲取的是指針變量本身的大小 ( 固定的 ) ;

④ 類型安全性 : 引用是類型安全的 , 指針類型不安全 , 引用比指針多了類型檢查機制 ;

總結

以上是生活随笔為你收集整理的【C++ 语言】引用 ( 引用简介 | 指针常量 | 常量指针 | 常引用 | 引用参数 | 引用 指针 对比 )的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。