c語言,關於形參實參單向值傳遞

2021-03-03 21:32:58 字數 1133 閱讀 1607

1樓:匿名使用者

分兩種情況bai給你對比一下du

函式形參zhi用普通變數,當dao函式被呼叫的時候,實參的版值被賦值給權

了形參,函式被呼叫的時候開闢了記憶體空間給形參,也就是資料被複制了,然後函式開始處理形參的資料,這個時候和實參的資料是沒有任何關係了。當函式結束的時候形參的記憶體空間是要被釋放,或者說刪除的,所以對實參啥也沒幹,只是拿了實參的資料複製了一份,然後對複製的那一份算的很起勁,結果最後刪除了,啥也沒幹。

函式形參用指標,當函式被呼叫的時候,實參指標,也就是把地址複製了一份給形參,但是函式中我們用取內容符號'*'對形參指標所指的內容,同時也是實參指標所指的同一份內容進行處理,函式結束的時候形參指標的值是被釋放了,可是形參指標,同時也是實參指標所指的內容還在。

感覺講的蠻清楚了,不懂再追問。

c語言,函式引數傳遞方式是單向的,形參不能給實參賦值是什麼意思? 自定義一個函式最後用return

2樓:足球隊聯絡員

實參把值傳給形參以後就和形參切斷聯絡了,對形參操作後得到的是副本。c語言是嚴謹的,一個地址對應唯一的引數,但同一個引數可能有不同的地址 拿經典的swap交換函式舉例 如果你交換的不是指定地址的變數 只是普通變數 那麼他給你返回的結果就是你給的變數的副本的交換 而當交換物件變成指定地址的物件的時候 就有唯一性了 這是真正的交換

拿現實生活舉例 讓張三和李四交換他們的妻子 天啊你怎麼知道是哪個張三哪個李四?為了不影響其他的張三李四,只好新建一個張三和李四的副本來交換了 這個就叫嚴謹 所以必須知道他們二人的明確地理位置 才能交換他們的妻子 實現真的交換

3樓:蒼老師的戀愛

哪個老師教你函式引數傳遞方

向為單向的?

如果引數如普通變數,並非指標的話,傳遞為單向,主調函式傳向被調函式如果引數為指標型別,則在被調函式中可以修改地址中的值,也就形成了雙向傳遞

自定義一個函式最後return那是函式返回值,不是引數

4樓:匿名使用者

我覺得第一句話有點多餘,他說的是這個意思

void fun(int a);

int b;

void fun(b = a);

我覺得他大概是這個意思,不能用後面這種賦值。

形參和實參的區別是什麼,c語言中形參和實參是什麼意思?有什麼區別?

實參是用來填充形參的。當函式被呼叫時,形參列在函式名後面的括號裡。執行函式呼叫時,實參被傳遞給形參。1 形參變數只有在被呼叫時才分配記憶體單元,在呼叫結束時,即刻釋放所分配的記憶體單元。因此,形參只在函式內部有效。函式呼叫結束返回主呼叫函式後則不能再使用該形參變數。2 實參可以是常量 變數 表示式 ...

在C語言中,函式的形參與實參之間的值傳遞是什麼意思 函式呼叫時如主函式中為swap a,b ,而從函式為

以int 型舉例 void swap int a,int b void swap1 int a,int b swap int int 稱之為實參 實際傳遞的是 a和 b 的地址 啊 在呼叫a與b 的值 a 使用的是原來的數 下面的 x,y a b 的值是x與y 的記憶體地址 swap1 int in...

C語言實引數組與形引數組問題,關於c語言中陣列作為函式引數的函式之間呼叫問題

這個問題是這樣的了,因為你的陣列定義的是二維大小是20 20 地址空間已經分配好了,而但你輸入的m和n的值小於20的時候,你只是先給第一維賦值,如果輸入的數字大於20,在對第二維賦值,但你輸入一些小的m和n時,其實二維陣列你還沒有賦值,他們的值還是你預設給的0啊,而當你用二維陣列去讀數的時候 a 0...