一、區別:
1、函式定義方式不同
形參出現在函式定義中,在整個函式體內都可以使用, 離開該函式則不能使用。
實參出現在主調函式中,進入被調函式後,實參變數也不能使用。
2、使用原理不同
函式的形参列於函式宣告中,在函式定義的函式體內使用。當函式呼叫時,形參(任何種類的)是一類將被填充的空白或是佔位符。
實參是用來填充形參的。當函式被呼叫時,形参列在函式名後面的括號裡。執行函式呼叫時,實參被傳遞給形參。
3、傳值呼叫和引用呼叫不同
傳值呼叫和引用呼叫指的是用於引數傳遞過程中的一種機制。傳值呼叫中,只使用了實參的值。傳值呼叫機制裡,形參是乙個區域性變數,其初始值為相應實參的值。在引用呼叫機制裡,將實參的位址傳遞給形參,從表面上看是以實參變數取代形參,因此任何發生在形參上的改變實際上都發生在實參變數上。
二、例子
1、你定義乙個函式void add(int a, int b),這裡的a和b就是形參。
2、當你進行函式呼叫的時候,add(1, 2),這裡的1和2就是實參。
擴充套件資料
形參和實參的特點
1、形參變數只有在被呼叫時才分配記憶體單元,在呼叫結束時,即刻釋放所分配的記憶體單元。因此,形參只在函式內部有效。函式呼叫結束返回主呼叫函式後則不能再使用該形參變數。
2、實參可以是常量、變數、表示式、函式等,無論實參是何種型別的量,在進行函式呼叫時,它們都必須有確定的值,以便把這些值傳送給形參。因此應預先用賦值,輸入等辦法使引數獲得確定值。
3、實參和形參在數量上,型別上、順序上應嚴格一致,否則就會發生型別不匹配的錯誤。
舉個例子:
#includeint ff(int *p)
int main()
這是乙個偽函式,主要用來說明呼叫函式的指標傳參 p,根據呼叫引數的宣告,我們知道這個傳參指標為乙個整型指標傳參,也就是說p主要用於傳輸位址用的。
你在看這裡的時候或許會對這個「」感到特別迷惑,給你大概解釋一下:「int a」中的「」是表示宣告的a是乙個整型指標變數,傳參p中的「」也是這樣的,只不過他們乙個是傳參,乙個是區域性變數罷了。接下來的「int b=a」中的「」則是取值的意思了,意思就是取出指標變數a中的值,好的!那麼這個a中的值是多少呢?從主函式開始看:主函式中定義乙個區域性的整數型變數b,這裡b被賦值為3,通過呼叫子函式「ff(&b)」來看,「&b」則表示取了b的位址。好!這是「&」的作用。接下來子函式ff就把b的位址傳給了指標傳參p。最後舉個小例子:快遞員b從快遞員a的手中接到了快遞並送給你。快遞員只需要傳送快遞——「&(取位址)」而不需要拆開快遞看看裡邊是啥,當你收到快遞後開啟快遞——「(取值)」後拿出東西使用。
實參和形參的區別: 1、實參和形參被分配的位址不同。可以這樣比喻,實參是一間別墅,而形參是另一間別墅。實參裡的東西被複製了乙份搬到了形參裡面,而形參這件別墅裡面的東西被扔了或者新增了新的東西是不會對實參這件別墅造成影響的。 2、如果不用指標或者引用,實參只能向形參裡面傳遞東西(值),就好比上面的舉例,實參的東西能拷貝乙份搬到形參裡面,而形參裡面的東西(值)被改變卻不會反向傳遞,就是形參裡面的東西不會覆蓋實參的東西(值)。 3、簡單地說就是實參和形參操作的位址不同,如果需要得到改變的值,一般都是用return返回值,如果要改變實參都會使用指標或者引用來實現,這樣操縱位址使得實參操縱起來更加的方便。 4、形參的作用域僅限於定義的函式內,一旦出了這個函式,定義的形參就會被釋放掉。
形參的 與 的區別
在定義時,是乙個識別符號,宣告該變數是乙個指標,比如說int p 那p就是乙個指向int型的指標 在呼叫時,p是指指標p指向的那個變數,比如說之前有int a 5 int p a 那麼p的值是a的位址,也就是指標p指向a,p則等於a的值,即p 5。而 則是引用,比如說有定義int a 5 再定義in...
引用形參 指標形參的使用
引用形參 指標形參可以改變主函式內的實參值 includeusing std cin using std cout using std endl 形參其實是在把實參傳遞給子函式的時候定義了乙個新的變數,但是這個變數的值和實參相等,所以在子函式裡無論怎麼修改都不會影響到呼叫它的函式的實參的值 int ...
形參和實參的區別
形參 parameter,形式引數 出現在函式定義中,在整個函式體內都可以使用,離開該函式則不能使用。實參 argument,實際引數 出現在主調函式中,進入被調函式後,實參變數也不能使用。形參和實參的功能是作資料傳送。發生函式呼叫時,主調函式把實參的值傳送給被調函式的形參從而實現主調函式向被調函式...