輸出型引數的設計及C 引用運算子「 」的使用

2021-09-13 11:27:16 字數 1095 閱讀 2215

函式根據資料傳遞方向可分為:

1、輸入型引數:是指這個引數的值已知,由外面傳給函式裡使用。

2、輸出型引數:是指這個引數的值未知,要通過函式傳出來。

設計乙個交換兩個整數的演算法,編寫相應的函式swap(x,y)如下:

#include

void

swap

(int x,

int y)

intmain()

在該函式中的確實現了兩個形參x和y的值的交換,但呼叫該演算法swap(a, b)時發現實參a,b的值並不會發生交換。出現錯誤的原因是這裡的形參x,y既是輸入型引數也是輸出型引數,而swap(x, y)中僅僅將x,y作為輸入型引數設計。

改正方法1:採用指標的方式來回傳形參的值,將swap(x, y)函式改為如下:

void

swap

(int

* x,

int* y)

這樣呼叫該函式的方式改為swap(&a, &b),其中&a,&b分別是實參a,b的位址,顯然改正後的演算法swap()比較複雜,可讀性差

改正方法2:採用引用形參,也就是將輸出型引數設計為引用型別形參。

這種方式是由c++語言提供的,c++中提供了引用運算子「&」。當建立引用時,程式用另乙個已定義的變數(目標變數)的名字初始化它,從那時起,引用變數作為目標變數的別名使用,對引用變數的改動實際是對目標變數的改動。

引用常用於函式形參中,當採用引用型形參時,在函式呼叫時會將形參的改變回傳給實參。利用引用運算子將swap()改為如下:

void

swap

(int

& x,

int& y)

當執行函式swap(a, b)時,形,實參的匹配相當於:

int & x = a;	//x為a的引用

int & y = b; //y為b的引用

這樣,a與x共享同一儲存空間,b與y共享同一儲存空間(同一位址),因此執行函式後x和y的值交換等於a和b的值交換。

引用運算子 (C )

在c 中提供了一種引用運算子 將某一變數定義為另乙個變數的引用變數,改變其中的乙個變數兩者均會同步變化。什麼是應用變數?引用變數 於 數學,是計算機語言中能儲存計算結果或能表示值抽象概念。變數可以通過變數名訪問。在指令式語言中,引用變數通常是可變的 但在純函式式語言中,變數可能是不可變的。定義乙個引...

C 運算子過載 輸入 輸出運算子

為了與io標準庫一致,過載輸入輸出運算子函式的第乙個行參應該是流的引用,第二個行參是物件的引用。如果過載為類的成員函式,第乙個行參應該是物件的引用,第二個行參是流的引用。使用方式是 classobj cout 這樣與標準io庫就不一致了,所以輸入輸出運算子不能過載為類的成員函式,可以過載為類的友元函...

C 運算子過載 輸入 輸出運算子

為了與io標準庫一致,過載輸入輸出運算子函式的第乙個行參應該是流的引用,第二個行參是物件的引用。如果過載為類的成員函式,第乙個行參應該是物件的引用,第二個行參是流的引用。使用方式是 classobj cout 這樣與標準io庫就不一致了,所以輸入輸出運算子不能過載為類的成員函式,可以過載為類的友元函...