c 的引用用法

2022-09-04 09:18:08 字數 1694 閱讀 1772

一、引用簡介

引用就是某一變數(目標)的乙個別名,對引用的操作與對變數的直接操作完全一樣。

引用的宣告方法:類別識別符號&引用名=目標變數名;

例1:

int a;

int &ra=a; //定義引用ra,它是變數a的引用,即別名。

說明:

二、引用應用

引用作為引數

void swap(int &p1,int &p2) //函式形參都是引用

int p;

p=p1;

p1=p2;

p2=p;

為在程式中呼叫該函式,則在相應的主調函式的呼叫點處,直接以變數作為實參呼叫即可,而不需要實參變數有任何的特殊要求。

int main()

說明:

常引用

如果既要利用引用提高程式效率,又要保護傳遞給函式的資料不在函式中被改變,使用常引用。

宣告方式:const 型別識別符號 &引用名=目標變數名

例3:

int a ;

const int &ra=a;

ra=1; //錯誤

a=1; //正確

引用作為返回值

用引用返回函式值,在記憶體中不產生被返回的副本。

宣告方式:

型別識別符號 &函式名(形參列表及型別說明)

例4:float temp; //定義全域性變數temp

float fn1(float r); //宣告函式fn1

float &fn2(float r); //宣告函式fn2,以引用的方式返回。

float fn1(float r) //定義函式fn1,它以返回值的方法返回函式值

float &fn2(float r) //定義函式fn2,它以引用方式返回函式值

void main() //主函式

{ float a=fn1(10.0); //第1種情況,系統生成要返回值的副本(即臨時變數)

float &b=fn1(10.0); //第2種情況,可能會出錯(不同 c++系統有不同規定)

//不能從被調函式中返回乙個臨時變數或區域性變數的引用

float c=fn2(10.0); //第3種情況,系統不生成返回值的副本

//可以從被調函式中返回乙個全域性變數的引用

float &d=fn2(10.0); //第4種情況,系統不生成返回值的副本

//可以從被調函式中返回乙個全域性變數的引用

cout《說明:

三、總結

在引用的使用中,單純給某個變數取個別名是毫無意義的,引用的目的主要用於在函式引數傳遞中,解決大塊資料或物件的傳遞效率和空間不如意的問題。

用引用傳遞函式的引數,能保證引數傳遞中不產生副本,提高傳遞的效率,且通過const的使用,保證了引用傳遞的安全性。

引用與指標的區別是,指標通過某個指標變數指向乙個物件後,對它所指向的變數間接操作。程式中使用指標,程式的可讀性差;而引用本身就是目標變數的別名,對引用的操作就是對目標變數的操作。

使用引用的時機。流操作符《和》、賦值操作符=的返回值、拷貝建構函式的引數、賦值操作符=的引數、其它情況都推薦使用引用。

C 引用用法

引用就是給變數取外號而已。void r x 不能建立void型別引用 int r x 不能建立引用的引用 int p x 不能建立指向引用的指標,但是可以建立指向指標的引用 int ra 10 a 不能建立引用的陣列 總結 引用一有三無 有型別,無引用,無指標,無陣列 includeusing na...

perl函式中的傳引用用法

自己的 sub inshash 1 close infile while key,value each ref hash field inshash tmp filenm src 2,hash field src perl中的是如何在函式中使用引用引數的。有時不想返回陣列或者其他形式,希望直接修改函...

python複製與引用用法分析

簡單複製是引用 a 1,23,4 b a 這是引用 b.append 2323 print a,b 1,23,4,2323 1,23,4,2323 使用copy.copy進行淺拷貝 impor copy c copy.copy b 拷貝 c.append 1 print b,c 1,23,4,232...