細說C (二十二) 關於形參和實參

2021-08-30 15:53:24 字數 823 閱讀 7211

實參

形參指標形參

若形參前無&,則為指標形參,即是傳值;實際上是這樣的,傳引用,系統將在函式棧,上開闢一塊記憶體,用於儲存指標,該指標指向了實參,所以修改這個指標所指向的物件會改變到實參;而傳值不同,傳值是把實參拷貝乙份,所以形參和實參將是兩個東西,互不影響!

附:1.深拷貝:指的就是當拷貝物件中有對其他資源(如堆、檔案、系統等)的引用時(引用可以是指標或引用)時,物件的另開闢一塊新的資源,而不再對拷貝物件中有對其他資源的引用的指標或引用進行單純的賦值。

2.淺拷貝:將指向物件的記憶體拷貝乙份,因而與物件仍然有關聯,此時應該注意指標空懸的問題 總結

形參變數只有在被呼叫時才分配記憶體單元,在呼叫結束時, 即刻釋放所分配的記憶體單元。因此,形參只有在函式內部有效。 函式呼叫結束返回主調函式後則不能再使用該形參變數。

實參可以是常量、變數、表示式、函式等, 無論實參是何種型別的量,在進行函式呼叫時,它們都必須具有確定的值, 以便把這些值傳送給形參。 因此應預先用賦值,輸入等辦法使實參獲得確定值。

實參和形參在數量上,型別上,順序上應嚴格一致, 否則會發生「型別不匹配」的錯誤。

函式呼叫中發生的資料傳送是單向的。 即只能把實參的值傳送給形參,而不能把形參的值反向地傳送給實參。 因此在函式呼叫過程中,形參的值發生改變,而實參中的值不會變化。

當形參和實參不是指標型別時,在該函式執行時,形參和實參是不同的變數,他們在記憶體中位於不同的位置,形參將實參的內容複製乙份,在該函式執行結束的時候形參被釋放,而實參內容不會改變。

而如果函式的引數是指標型別變數,在呼叫該函式的過程中,傳給函式的是實參的位址,在函式體內部使用的也是實參的位址,即使用的就是實參本身。所以在函式體內部可以改變實參的值。

關於C語言形參和實參

1,對於剛接觸c語言的人對於形參和實參的理解可能不是那麼詳細,或者說很是模糊,但大體來說形參和實參的區別在於 形參只能是變數,而實參可以使變數,常量,也可以是表示式,關於變數,顧名思義,是乙個可變的量,我們通過乙個函式來理解 void add int a,int b 這裡a,b就是形參,只能是變數 ...

c 實參和形參

c c 中的實參和形參 今天突然看到一道關於形參和實參的題,我居然不求甚解。藐視過去在我的腦海裡只有乙個引數的概念,對於形參和實參的區別還真的不知道,作為學習了幾年c 的人來說,真的深深感覺對不起自己對不起c 老師 t。t 我覺得只要明白了值傳遞和位址傳遞,就應該能明白形參和實參的具體工作細節了。1...

C 形參和實參

今天突然看到一道關於形參和實參的題,我居然不求甚解。藐視過去在我的腦海裡只有乙個引數的概念,對於形參和實參的區別還真的不知道,作為學習了幾年c 的人來說,真的深深感覺對不起自己對不起c 老師 t。t 我覺得只要明白了值傳遞和位址傳遞,就應該能明白形參和實參的具體工作細節了。1 值傳遞 實參是變數,表...