㈠ 實參和形參都需要佔用存儲單元么
實參和形參各佔用獨立的存儲單元。
實參和形參是各占獨立存儲空間,函數調用過程中,實參向形參拷貝復制值。實參是個變數,形參也是個變數。
如果佔用同一片空間的話,編譯時候就不存在實參形參類型不匹配的報錯。參數傳遞中,形參值的改變不影響實參的值。
(1)定義函數時函數的形參是不分配存儲單元擴展閱讀
形參和實參的區別
1、形參變數只有在被調用時才分配內存單元,在調用結束時,即刻釋放所分配的內存單元。因此,形參只有在函數內部有效。函數調用結束返回主調函數後則不能再使用該形參變數。
2、實參可以是常量、變數、表達式、函數等,無論實參是何種類型的量,在進行函數調用時,它們都必須具有確定的值,以便把這些值傳送給形參。因此應預先用賦值,輸入等辦法使實參獲得確定值。
3、實參和形參在數量上,類型上,順序上應嚴格一致,否則會發生「類型不匹配」的錯誤。
4、函數調用中發生的數據傳送是單向的。即只能把實參的值傳送給形參,而不能把形參的值反向地傳送給實參。因此在函數調用過程中,形參的值發生改變,而實參中的值不會變化。
㈡ c語言菜鳥問題:形參與實參的作用
<1>
在定義函數中指定的形參,在未出現函數調用時,它們並不佔內存中的存儲單元.只有在發生函數調用時,函數中形參才被分配內存單元.在調用結束後,形參所佔的內存單元也被釋放。
<2>
實參可以是常量、變數或表達式,如:max(3,
a+b);
但要求它們有確定的值。在調用時將實參的值賦紿形參(如果形參是數組名,則傳遞的是數組首地址而不是數組的值。)
<3>
在被定義的函數中,必須指定形參的類型。
<4>
實參與形參的類型應相同或賦值兼容。類型不相同時,按賦值運算時的類型轉換規則進行轉換。
<5>
C語言規定,實參變數對形參變數的數據傳遞是「值傳遞」,即單向傳遞,只由實參傳紿形參,而不能由形參傳回來紿實參,這是和fortran不同的。在內存中,實參單元與形參單元是不同的單元。
調用函數時,紿形參分配內存單元,並將實參對應的值傳遞紿形參,調用結束後,形參單元被釋放,實參單元仍保留並維持原值。因此在執行一個被調用函數時,形參的值如果發生改變,並不會改變主調用函數的實參的值。
㈢ 在C#中什麼是形參、什麼是實參
其他語言都是一樣的吧
main()
{ int a=1;
fun(a); // 這里的a ,傳到fun函數里,在這里,這個a 是實參
}
fun( int b){
b=b+1; //這里的b ,是函數裡面定義的,是形式參數,它接受調用時實參的值。
}
㈣ 在C語言中,函數的形參和實參可以占同一個存儲單元,也可以占不同的存儲單元吧
形參只是實參的一個副本,即拷貝,它們不能公用存儲單元。
參數之間的傳遞分為數值傳遞與地址傳遞,如果是數值傳遞時,各自佔用不同的內存單元,如果是地址傳遞時,共用同一段內存單元。
函數調用時,主調函數把實參的值傳送給被調函數的形參從而實現主調函數向被調函數的數據傳送。 形參變數只有在被調用時才分配內存單元,在調用結束時,即刻釋放所分配的回內存單元。
形參只是實參的一個副本,即拷貝,它們不能公用存儲單元,不佔相同的空間。
(4)定義函數時函數的形參是不分配存儲單元擴展閱讀:
函數調用過程
1、函數的形參列於函數聲明中,在函數定義的函數體內使用。在未出現函數調用時,形參不佔內存中的存儲單元;當函數調用時,形參(任何種類的)是一類將被填充的空白或是佔位符。
2、將實參的值傳遞給形參。當函數被調用時,實參列在函數名後面的括弧里。執行函數調用時,實參被傳遞給形參。
3、在執行函數期間,由於形參已經有值,可以利用其進行相關運算。
4、通過return語句將函數值帶回到主調函數。
5、調用結束,形參單元被釋放。實參單元仍保留並維持原值(值傳遞)。
㈤ 函數中什麼是實參什麼是形參
朋友你好,
具體書面上來看,函數的形參和實參具有以下特點:
1. 形參變數只有在被調用時才分配內存單元,在調用結束時,即刻釋放所分配的內存單元。因此,形參只有在函數內部有效。函數調用結束返回主調函數後則不能再使用該形參變數。
2. 實參可以是常量、變數、表達式、函數等,無論實參是何種類型的量,在進行函數調用時,它們都必須具有確定的值,以便把這些值傳送給形參。因此應預先用賦值,輸入等辦法使實參獲得確定值。
3. 實參和形參在數量上,類型上,順序上應嚴格一致,否則會發生類型不匹配」的錯誤。
4. 函數調用中發生的數據傳送是單向的。即只能把實參的值傳送給形參,而不能把形參的值反向地傳送給實參。 因此在函數調用過程中,形參的值發生改變,而實參中的值不會變化。
從我們平常的編碼當中,其實對實參和形參的區分方法很簡單:
1. 比如你定義一個函數void add(int a, int b),這里的a和b就是形參。
2. 當你進行函數調用的時候,add(1, 2),這里的1和2就是實參。
即,你新建一個方法需要的參數,就是叫形參,你調用這個參數的時候,傳入的參數就叫實參。
其實,這只是一個很簡單的概念問題,糾結這種東西對自己沒有一點好處,只要我們記住什麼叫形參和實參就行了,用法其實很簡單。
希望我的話對你有所幫助。
㈥ 在c語言中 調用函數時,形參與實參可以共用存儲單元嗎
答案肯定的——形參和實參可以完全一樣。
在程序執行的過程中,實參的作用域是主函數,只要程序沒有停止,實參一直有效;
形參是定義函數是引入的參數,系統只在該函數被調用時分配臨時內存,當自定義函數執行完後,用於臨時儲存形參的空間將被釋放。
所以即使形參和實參的類型,名字完全一樣,系統也能夠把它們區分開。即可以完全一樣。
註:解決這個疑問關鍵是要搞清楚變數作用域方面的內容。
㈦ 幫我解解這個問題,在c程序中定義函數的形參時,系統要不要對形參分配內存空間,說說你的理由!
形參只在這個函數執行的時候才會被分配內存,當函數執行完畢後分配的內存會被釋放。至於理由……函數的參數屬於局部變數,如果一開始就分配的話,別的地方也能訪問修改,數據就不確定了。
另外,函數的形參實際是:調用此函數前,將實參壓入堆棧,然後跳轉到函數的地址執行。函數執行完跳回去時,堆棧彈出,內存釋放。
㈧ c語言的形參是否占存儲單元
C。
函數的形參是函數定義時由用戶定義的形式上的變數,實參是函數調用時,主調函數;被調函數提供的原始數據。
形參變數只有在被調用時才分配內存單元,在調用結束時,即刻釋放所分配的內存單元。因此,形參只有在函數內部有效。函數調用結束返回主調函數後則不能再使用該形參變數。實參和其所對應的形參分別佔用不同的存儲單元,彼此之間不影響。
(8)定義函數時函數的形參是不分配存儲單元擴展閱讀:
形參和實參的特點
1、形參變數只有在被調用時才分配內存單元,在調用結束時,即刻釋放所分配的內存單元。因此,形參只在函數內部有效。函數調用結束返回主調用函數後則不能再使用該形參變數。
2、實參可以是常量、變數、表達式、函數等,無論實參是何種類型的量,在進行函數調用時,它們都必須有確定的值,以便把這些值傳送給形參。因此應預先用賦值,輸入等辦法使參數獲得確定值。
3、實參和形參在數量上,類型上、順序上應嚴格一致,否則就會發生類型不匹配的錯誤。
4、在一般傳值調用的機制中只能把實參傳送給形參,而不能把形參的值反向地傳送給實參。因此在函數調用過程中,形參值發生改變,而實參中的值不會變化。而在引用調用的機制當中是將實參引用的地址傳遞給了形參,所以任何發生在形參上的改變實際上也發生在實參變數上。
網路-形參