C C 如何傳遞和返回結構 物件

2021-10-06 03:45:12 字數 1038 閱讀 6385

最近被python的變數引用搞的很頭疼

所以用c++做了實驗

只傳遞結構:

#include

class

point

;void

print

(point x)

intmain

(int argc,

const

char

* ar**)

輸出:0x000

0x7ffe00000001

132766

只返回結構

#include

class

point

;point print()

intmain

(int argc,

const

char

* ar**)

輸出:0x7ffe00000001

132766

0x7ffe00000001

132766

傳遞並返回結構

#include

class

point

;point print

(point x)

intmain

(int argc,

const

char

* ar**)

輸出:0x000

0xf2d78a4b000000011-

220755381

0xf2d78a4b000000011-

220755381

結論:c++編譯器在傳遞結構結構/物件時做了如下幾件事

一.如果結構是傳入的,那麼編譯器會把結構拷貝乙份傳遞給函式

二.函式返回時結構有兩種情況:

1.如果結構時在函式中新建的,那麼編譯器會直接傳遞這個結構(不會刪掉原結構並拷貝乙份),這和python是類似的

2.如果結構時傳入的,那麼編譯器會傳入乙份拷貝,並再返回時拷貝乙份傳入的拷貝返回(可能出於便於**堆疊變數的考慮)

C C 函式中引數和返回值傳遞簡記

原文 c c 函式引數和返回值傳遞機制 簡單記錄一下 c 函式呼叫中,引數和返回值傳遞的方法和步驟 函式引數的傳遞是初始化語義 用呼叫者的實參去初始化函式的形參,如果引數是物件,需要呼叫該類的拷貝建構函式,如果沒有顯式定義的拷貝建構函式,則執行預設的按成員拷貝 函式返回值的傳遞內容稍多,示例 tes...

別名的定義 傳遞 返回物件

的功能 1 取位址符 2 引用符 一 定義別名 定義變數的別名 如,int n int m n m是n 的別名 可以用int型別的m來表示int型別的n。且m與n的位址也一樣。故m 和 n 是同乙個東西!定義物件的別名 如 human mike human rmike mike rmike是mike...

C 通過引用來傳遞和返回類物件

類是c 語言物件導向程式設計的載體,我們也可以將類視為一種特殊的資料型別。在c 語言中,由類宣告的物件,和其它型別宣告的變數一樣,同樣可以通過傳值 引用和指標的方式作為函式的引數或函式返回值。通常來講,除非是迫不得已,否則最好不要採用傳值的方式傳遞和返回物件,這是因為採用傳值的方式傳遞和返回物件的過...