C 中函式呼叫時的三種引數傳遞方式

2021-06-27 23:36:01 字數 1367 閱讀 6279

在c++中,引數傳遞的方式是「實虛結合」。

按值傳遞的過程為:首先計算出實參表示式的值,接著給對應的形參變數分配乙個儲存空間,該空間的大小等於該形參型別的,然後把以求出的實參表示式的值一一存入到形參變數分配的儲存空間中,成為形參變數的初值,供被呼叫函式執行時使用。這種傳遞是把實參表示式的值傳送給對應的形參變數,故稱這種傳遞方式為「按值傳遞」。

使用這種方式,呼叫函式本省不對實參進行操作,也就是說,即使形參的值在函式中發生了變化,實參的值也完全不會受到影響,仍為呼叫前的值。

[cpp]view plain

copy

/*pass by value

*/#include 

using

namespace

std;  

void

swap(

int,

int);  

intmain()  

void

swap(

intx, 

inty)  

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

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

[cpp]view plain

copy

#include 

using

namespace

std;  

void

swap(

int*,

int*);  

intmain()  

void

swap(

int*x,

int*y)  

按值傳遞方式容易理解,但形參值的改變不能對實參產生影響。

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

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

[cpp]view plain

copy

#include 

using

namespace

std;  

void

swap(

int&,

int&);  

intmain()  

void

swap(

int&x,

int&y)  

C 中函式呼叫時的三種引數傳遞方式

在c 中,引數傳遞的方式是 實虛結合 按值傳遞 pass by value 位址傳遞 pass by pointer 引用傳遞 pass by reference 按值傳遞的過程為 首先計算出實參表示式的值,接著給對應的形參變數分配乙個儲存空間,該空間的大小等於該形參型別的,然後把已求出的實參表示式...

函式呼叫時的三種引數傳遞方式

size medium 今天學習 從新手到高手c 全部精華教程 知道了函式呼叫的三種引數傳遞方式 第一種 傳值 size include using namespace std void swap int a,int b int main size medium 程式結果 img 與按值傳遞相比,按...

C 函式引數傳遞的三種方式

1.值傳遞 void myswap01 int a,int b 2.位址傳遞 void myswap02 int a,int b 3.引用傳遞 void myswap03 int a,int b int main 結果 值傳遞並不改變實參的大小,位址傳遞和引用傳遞均改變位址大小。原因是什麼?是因為考...