函式引數的傳遞

2021-09-20 03:27:17 字數 1091 閱讀 8289

開發工具與關鍵技術: visual studio / c++
c++有三種引數傳遞機制:

值傳遞,指標傳遞,引用傳遞

值傳遞:值傳遞是最常見的一種引數傳遞的方式,首先計算出實參表示式的值,接著給對應的形參變數分配乙個儲存空間,然後把以求出的實參表示式的存入到形參變數分配的儲存空間中,成為形參變數的初值,供被呼叫函式執行時使用。這種傳遞是把實參表示式的值傳送給對應的形參變數使用這種方式,呼叫函式本身不對實參進行操作,也就是說,行參改變不會實參。

下面就舉了個值傳遞的例子

例子中fun()函式採用值傳遞的方式,傳入的實參實際上是m、n的副本而非其本身,所以對副本的改變並不會反映到m、n本身上。

輸出結果為12

指標傳遞:

如果在函式定義時將形參說明成指標,對這樣的函式進行呼叫時就需要指定位址值形式的實參。這時的引數傳遞方式就是位址傳遞方式。

指標傳遞與按值傳遞的不同在於,它把實參的儲存位址傳送給對應的形參,從而使得形參指標和實參指標指向同乙個位址。因此,被呼叫函式中對形參指標所指向的位址中內容的任何改變都會影響到實參。

如圖例子

fun()函式體內的x是指向外部變數n的指標,改變指標的內容將導致n的值得改變,所以n的值成為了10。

指標傳遞方式雖然可以使得形參的改變對相應的實參有效,但如果在函式中反覆利用指標進行間接訪問,會使程式容易產生錯誤且難以閱讀。

引用傳遞:

如圖乙個很簡單的例子

引用為引數,則既可以使得對形參的任何操作都能改變相應的資料,又使得函式呼叫顯得方便、自然。引用傳遞方式是在函式定義時在形參前面加上引用運算子「&」

函式的引數傳遞

一 函式引數傳遞機制的基本理論 函式引數傳遞機制問題在本質上是呼叫函式 過程 和被呼叫函式 過程 在呼叫發生時進行通訊的方法問題。基本的引數傳遞機制有兩種 值傳遞和 引用傳遞 以下討論稱呼叫其他函式的函式為主調函式,被呼叫的函式為被調函式。值傳遞 passl by value 過程中,被調函式的形式...

函式的引數傳遞

def func a 1,b 2,c 3 形參有預設值 print a,b,c func func 4,5,6 func 5,6 func 7 func a 8 func a 9,b 10 func 11,c 12 func 11,a 12 和func a 12,13 是錯誤的 def calcsu...

函式引數的傳遞

先來幾道題壓壓驚先 第一題 void exchg1 int x,int y int main void 問題是x y a b 第二題 void exchg2 int px,int py int main void 問題是 px py a b 第三題 void exchg3 int x,int y i...