c 引用呼叫

2021-10-25 05:19:09 字數 1146 閱讀 4472

目錄

1:什麼是引用

2:函式的引數傳遞

3:傳遞物件

4:總結

引用就是別名,如:int &rnum = num;

rnum 是整型變數 num 的別名,這樣,對 rnum 的操作實際就是對 num 的操作。

&rnum的值&num的值(位址)是一樣。

注意:定義引用時一定要同時對該引用進行初始化,如:

int a;

int &b = a;

而不能寫成

int a;

int &b;

b = a;

這樣是錯誤的。引用就如同常量,只能對其初始化,不能賦值

1:按值傳遞

2:指標傳遞

3:引用傳遞

void fun(int &aa,int &bb)

{ int c;

cout<<"fun:交換前,a = "《它類似於指標的傳遞方式,僅僅是將 a 和 b 的記憶體位址以直接引用的方式傳遞到函

數體中,因此不會複製 a 和 b 的資料到棧中,這樣在函式內的操作就是對 a 和 b 的別名 aa 和bb 的操作,我們知道物件的別名與其記憶體位址相同,因此對 aa 和 bb 的操作就是對 a 和 b 的操作

注意:指標是間接訪問,比如它要用*來讀取*後面位址處的資料,而引用則是直接訪問,它是某個物件的別名,因此不用任何符號就可以直接讀取該物件的資料。因此將指標作為函式的接收引數是間接引用方式來接收引數,而將別名作為函式的接收引數是以直接引用方式來接收引數。

1:通過值傳遞物件

按值傳遞在向函式傳遞乙個物件時,會像傳遞變數那樣建立乙個該物件的拷貝,而從函式返回乙個物件時,也要建立這個被返回的物件的乙個拷貝。(浪費)

2:通過指標傳遞物件

傳遞的物件的位址,不用建立乙個新的物件的拷貝,節省了資源

3:用const指標傳遞物件

這樣可以保證該函式接收和返回的物件是不可修改的,同時因為傳遞的位址,同樣節省了資源

4:通過引用傳遞物件

由於引用不能重新分配去引用另乙個物件,它始終是常量,因此我們不用將它設定為常量。(既節省資源,又保證了不可修改)

在函式中按位址返回乙個棧中物件時,由於該物件是從函式中建立的,函式返回後,該函式的棧中物件也被銷毀了,因此不要對這個不存在的物件進行任何操作。

C 引用呼叫

向函式傳遞引數的引用呼叫方法,把引數的位址複製給形式引數。在函式內,該引用用於訪問呼叫中要用到的實際引數。這意味著,修改形式引數會影響實際引數。按引用傳遞值,引數引用被傳遞給函式,就像傳遞其他值給函式一樣。因此相應地,在下面的函式swap 中,您需要宣告函式引數為引用型別,該函式用於交換引數所指向的...

C 引用呼叫

向函式傳遞引數的引用呼叫方法,把引用的位址複製給形式引數。在函式內,該引用用於訪問呼叫中要用到的實際引數。這意味著,修改形式引數會影響實際引數。按引用傳遞值,引數引用被傳遞給函式,就像傳遞其他值給函式一樣。因此相應地,在下面的函式 swap 中,您需要宣告函式引數為引用型別,該函式用於交換引數所指向...

C 引用呼叫 指標傳遞

操作位址是實參位址,相當於實參的乙個 別名 因而對其操作即對實參的操作 1 引用建立同時需被初始化。2 不能有null引用。3 一旦引用被初始化,即不可改變引用的關係如下為常量引用 int findmax const vector array 常量引用保證 省去副本開銷 函式呼叫不會改變實參 指標傳...