c 中引數傳遞和函式返回簡析

2021-09-09 02:12:40 字數 453 閱讀 1716

1.引數傳遞:

每次呼叫函式時,都會重新建立該函式所有的形參,此時所傳遞的實參將會初始化對應的形參。形參的初始化與變數的初始化一樣。

非引用型別:如果形參具有非引用型別,則複製實參的值。普通的非引用型別的引數通過複製對應的實參實現初始化。當用實參副本初始化形參時,函式並沒有訪問呼叫所傳遞的實參本身,因此不會修改實參的值。

引用型別:如果形參為引用型別(第 2.5 節),則它只是實參的別名。與所有引用一樣,引用形參直接關聯到其所繫結的物件,而並非這些物件的副本。

2.函式返回:

函式的返回值用於初始化在呼叫函式處建立的臨時物件。用函式返回值初始化臨時物件與用實參初始化形參的方法是一樣的。

返回非引用:在呼叫函式的地方會將函式返回值複製給臨時物件。

返回引用:當函式返回引用型別時,沒有複製返回值。相反,返回的是物件本身。

C語言位址傳遞和值傳遞簡析

不少同學在學到c語言的指標部分時感到很困惑,對經常提到的 值傳遞 和 位址傳遞 兩個概念弄不明白。實際上,因為位址本身也可以作為乙個特殊的 值 所以位址傳遞也是一種特殊的值傳遞。只是為了強調其特殊性,故稱之為 位址傳遞 我們在學習過程中可以視引數的形式而區別對待,比如若引數傳遞的是簡單資料型別的數值...

C語言位址傳遞和值傳遞簡析

c語言沒用引用傳遞,想用 引用傳遞,把。c改成。cpp,就能編譯通過。若引數傳遞的是簡單資料型別的數值,則將其歸類為值傳遞方式 若引數傳遞的是變數的位址,則視其為位址傳遞方式。值傳遞過程中,被調函式的形參作為被調函式的區域性變數處理,即在記憶體的堆疊中開闢空間以存放由主調函式放進來的實參的值,從而成...

C函式引數傳遞與返回值傳遞

1 引數傳遞 stdcall和 cdecl都是函式呼叫約定關鍵字,先給出這兩者的區別,然後舉例項分析 stdcall 引數由右向左壓入堆疊 堆疊由函式本身清理。cdecl 引數也是由右向左壓入堆疊 但堆疊由呼叫者清理。另外,這兩者在同一名字修飾約定下,編譯過後變數和函式的名字也不一樣,具體見另一博文...