如何證明C語言函式引數的轉遞是單值傳遞

2021-04-07 07:01:55 字數 428 閱讀 8355

朱金燦 在

c語言函式使用中函式引數的傳遞是單值轉遞,即把實參傳遞給形參,就是把實參複製乙份傳給形參。如何證明這一點呢?我想到了乙個方法,就是在呼叫函式和被呼叫函式都輸出實參和形參的位址。如果位址一致那麼就是雙向傳遞,如果位址不一致,就是單向傳遞。

例程如下:

#include

void fun(int a,int b)

int main(void)

執行結果如下圖:

現在我們可以清楚地看到,實參和形參的位址不一樣。也就是說當傳值進去時,它們的值是一樣的,但它們的位址不一樣,因此一旦改變形參的值,實參就不能相應地改變。這樣我們也可以更好地理解為什麼傳指標進去可以改變實參的值。其實道理是一樣的。傳指標進去,我們一般不去直接改變指標的值,而是去改變指標所指的值,這樣實際上就是形參和實參的位址是一樣的,改變了形參,實參也作相應的變動。

c語言 函式引數

引數的使用,在函式中使用了多種引數形式 例 void show n char char ch int num 這行 是通知編譯器show n char 使用名為 ch 和 num 的兩個引數 並且這兩個引數的型別分別是char 和 int 變數 ch 和 num 被稱為形式參量或形式參量 形式參量是...

c語言是如何處理函式呼叫的?

1.要編譯的測試 int plus int x,int y int main void 2.main中return語句語法分析 if equal tok,return 2.1 當前token為return,則建立型別為nd return的node。2.2 由於return後面跟著plus 3,4 所...

C 語言函式引數的傳遞

c 語言函式引數的傳遞 就像c語言眾多的後世子孫一樣,c 的函式引數是非常講究的。首先,引數必須寫在函式名後面的括號裡,這裡我們有必要稱其為形參。引數必須有乙個引數名稱和明確的型別宣告。該引數名稱只在函式體內部可見。因此在該函式體以外的任何地方使用同樣的變數名是不會引起衝突的。每當呼叫函式的時候,必...