結構體的形參和實參是怎麼傳遞的

2022-02-17 19:11:05 字數 575 閱讀 1855

1樓:好嘞啊啊啊啊

#include

#include

struct student

;void fun(struct student *person) //和一般的程式一樣也要改成指標

int main()

;fun(&zhang);  //取結構體地址printf("%ld,%s,%6.11f",zhang.num,zhang.name,zhang.money);

return 0;

}如果是原來那個函式的話由於是值傳遞 所以不會改變原來結構體內的資料改成指標就可以改變了

2樓:儒雅的小濤

只要是陣列,無論是不是構造而成,作為實參傳送的都是首地址(即指標,指向同一個地址),只要實參傳送的是變數,那麼就是形參在記憶體中另開闢一段地址,將實參中的內容複製到這個地址中進行操作。資料型別的區別就是記憶體大小的區別,所以從記憶體地址的關係來理解。比如在結構體變數a中有結構體變數成員b[100](陣列);

實參為變數a就是複製內容,

實參為結構體變數成員b就是傳遞地址,

實參為b[0]就是複製內容。

關於實參和形參的值轉換問題,實參和形參什麼條件下不能進行型別轉換

對於陣列型別的引數,實際上傳的是陣列的首地址,因此它是一個地址傳遞而不是值傳遞,值傳遞和地址傳遞我舉個例子就比較好理解 有一個抽屜裡面放著一個蘋果,這個抽屜相當於是一個住址 也就是地址 蘋果相當於該地址中的一個值 如果你傳入一個值,相當於把這個蘋果克隆了一個給函式,這個時候函式無論怎麼處理,這個抽屜...

在C語言中,定義函式的形參和實參之間具體是如何進行引數傳

函式中的形參和呼叫時的實參都是陣列名時,傳遞方式為 地址傳遞 此時形參和實參共用同一段記憶體 都是變數時,傳遞方式為 值傳遞 實參與形參互不影響 主要有兩種 1 值傳遞 在函式呼叫時,將實參的值複製一份傳遞到呼叫函式中,這樣,如果在呼叫函式中修改了引數的值,也不會影響到實參的值。2 引用傳遞 與 1...

C語言中的巨集定義如何傳遞形參

給巨集傳遞執行時計算的變數是絕無可能辦到的。不過假如只是這一個迴圈的話,可以利用預處理 define repeat 0 f f 0 define repeat 1 f repeat 0 f f 1 define repeat 2 f repeat 1 f f 2 define repeat 3 f ...