C 函式的呼叫與引數傳遞

2021-08-31 20:32:48 字數 1428 閱讀 7511

c++函式的呼叫與引數傳遞

根據函式引數傳遞的不同方式分 :

1. 函式傳值呼叫

2. 函式傳址呼叫

3. 函式引用呼叫

1、傳值呼叫 

函式傳值呼叫是將實參的值傳遞給形參,形參和實參各自具有單獨的儲存空間,因此改變形參的值時,實參的值不會受到任何影響。

值傳呼叫多用在不需要被呼叫函式改變實參的值的場合。實參可以是常量、變數或表示式,被呼叫函式的形參必須用變數,不能是指標或引用。

示例**:

...void datadouble(int x,int y);

int main()

{ int x,y;

x=10;

y=5;

datadouble(x,y); //傳值呼叫

cout<<"in main() "<<"x="<

執行該程式,輸出以下結果:

in datadouble()  x=20;y=10

in main()  x=10;y=5

2、傳址呼叫 

傳址呼叫則傳遞的是變數的儲存位址。實參是位址值,用位址常量或指標變數表示,形參是指標變數。函式呼叫時系統將實參所表示的位址值賦給形參的指標變數,從而使得形參和實參的指標指向的是相同的儲存位址。在被呼叫函式中,可以通過形參指標改變其所指向的元素。

傳址呼叫的實現機制就是可以通過改變形參所指向的變數值來影響實參。 

示例**:

...void datadouble(int *x,int *y);

int main()

{ int x,y;

x=10;

y=5;

datadouble(&x,&y); //實參傳遞的是位址值

cout<<"in main() "<<"x="<

執行該程式,輸出以下結果:

in datadouble()  x=20;y=10

in main()  x=20;y=10

3、引用呼叫

使用函式的引用呼叫時,函式的實參用變數名,形參是引用型別。函式呼叫時,實參給形參賦值,對引用進行了初始化,引用是實參的別名。在被呼叫函式中,可以通過引用間接訪問被引用的變數,所有在引用上施加的操作,實質上就是施加在被引用變數上的操作。

引用呼叫可以通過形參引用改變被呼叫函式中被引用的實參變數的值。

示例**:

...void datadouble(int &rx,int &ry);

int main()

{ int x,y;

x=10;

y=5;

datadouble(x,y);

cout<<"in main() "<<"x="<

執行該程式,輸出以下結果:

in datadouble()  x=20;y=10

in main()  x=20;y=10

c 函式呼叫引數傳遞

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

vb中函式的呼叫與引數的傳遞

形參如果是陣列必須加小括號 如 定義過程 sub em pay as single 呼叫過程 em xu 按值傳遞 byval 形參和實參占有不同的儲存空間,呼叫過程改變了形參變數的值,實參的值不會受影響。呼叫結束後,實參還是呼叫之前的值,private sub command1 click dim...

C 函式引數 值傳遞與引用傳遞

以前我們在c語言中函式引數傳遞過程中,如果我們想要讓當a函式作用域中的變數經過b函式處理之後的數值仍然在a函式中生效,這個時候函式引數的傳遞時需要引用方式去傳遞,方式如下 include 函式引數為指標,通過修改指標裡面的內容達到對main中b變數的修改 void func int a int ma...