C語言函式中形參與實參之間容易混淆的部分

2021-09-22 20:37:35 字數 788 閱讀 3251

首先我們以乙個很簡單的例子 寫乙個函式可以交換兩個整形變數的內容

以下是最直觀的以函式的方式交換兩個值的**

沒錯 就是一氣呵成寫出了錯誤的**

經過除錯監視之後發現

在函式內x與y的確借助tmp交換了值但是卻並沒有改變a與b的值

他們的位址他們所處的記憶體空間都是不同的所以並沒有發生變化

其中沒有交換的根本原因則是:

當我們把實參傳遞給形參的時候

形參將是實參的乙份臨時拷貝

對形參的修改不會改變實參

於是有了新的想法,我們可以利用指標來合理的解決這個問題 直接通過a與b取位址來改變a與b的值

C語言 函式的形參與實參

形參出現在函式定義中,在整個函式體內都可以使用,離開該函式則不能使用。實參出現在主調函式中,進入被調函式後,實參變數也不能使用。形參和實參的功能是作資料傳送。發生函式呼叫時,主調函式把實參的值傳送給被調函式的形參從而實現主調函式向被調函式的資料傳送。1.形參變數只有在被呼叫時才分配記憶體單元,在呼叫...

C語言基礎 形參與實參

上課老師會給你講函式的形參與實參的概念,前期基本上背誦,沒有真正理解。這裡寫乙個簡單的例子說明下。測試用例如下 arm linux gcc test para.c o test para 這裡用交叉編譯工具,方便後面讀彙編 測試結果,很明顯real swap func才能達到交換的目的 簡單的說你得...

函式中的形參與實參

總結了兩個回答關於指標和單量傳入是值傳遞,函式執行後不會改變原來變數值 陣列是取了陣列的首位址相當於傳入的是實參,函式執行後會發生改變寫的非常非常清楚 在普通變數或下標變數作函式引數時,形參變數和實參變數是由編譯系統分配的兩個不同的記憶體單元。在函式呼叫時發生的值傳送是把實參變數的值賦予形參變數。在...