1. 關於形參和實參
dim a as integer,y as integer,x as integer
private sub command1_click()
open "c:\\a1.dat" for append as #1
call aa(5) '這里數字5就是實參
y=y+a:print #1 "y=";y,"a=";a
close #1
end sub
private sub form_load()
open "c:\\a1.dat" for append as #1: close #1
end sub
sub aa (i as integer)'這里 i就是形參
x=1
do until x>i
a=a+x:x=x+5
loop
end sub
按值傳遞參數
按值傳遞參數時,傳遞的只是變數的副本。如果過程改變了這個值,則所作變動隻影響副本而不會影響變數本身。用 ByVal 關鍵字指出參數是按值來傳遞的。
例如:
Sub PostAccounts (ByVal intAcctNum as Integer)
.
. '這里放語句。
.
End Sub
按地址傳遞參數
按地址傳遞參數使過程用變數的內存地址去訪問實際變數的內容。結果,將變數傳遞給過程時,通過過程可永遠改變變數值。按地址傳遞參數在 Visual Basic 中是預設的。
如果給按地址傳遞參數指定數據類型,就必須將這種類型的值傳給參數。可以給參數傳遞一個表達式,而不是數據類型。Visual Basic 計算表達式,如果可能的話,還會按要求的類型將值傳遞給參數。
把變數轉換成表達式的最簡單的方法就是把它放在括弧內。例如,為了把聲明為整數的變數傳遞給過程,該過程以字元串為參數,則可以用下面的語句:
Sub CallingProcere ()
Dim intX As Integer
intX = 12 * 3
Foo (intX)
End Sub
Sub Foo (Bar As String)
MsgBox Bar
'Bar 的值為字元串『 36 』。
End Sub
不明白的加網路hi
2. 形參只有在被調用時才分配存儲空間這句話對嗎。
對的
形參變數只有在被調用時才分配內存單元,在調用結束時,即刻釋放所分配的內存單元。因此,形參只有在函數內部有效。函數調用結束返回主調函數後則不能再使用該形參變數。
3. c語言中,函數發生調用時,實參和形參都會佔用內存嗎
是的,
形參
和
實參
是兩個不同的
存儲單元
,都佔用內存空間,當
函數調用
結束後,形參的內存空間也就會被釋放掉了。
4. 形參和實參有什麼作用
一、區別:
1、函數定義方式不同
形參出現在函數定義中,在整個函數體內都可以使用,離開該函數則不能使用。
實參出現在主調函數中,進入被調函數後,實參變數也不能使用。
2、使用原理不同
函數的形參列於函數聲明中,在函數定義的函數體內使用。當函數調用時,形參(任何種類的)是一類將被填充的空白或是佔位符。
實參是用來填充形參的。當函數被調用時,形參列在函數名後面的括弧里。執行函數調用時,實參被傳遞給形參。
3、傳值調用和引用調用不同
傳值調用和引用調用指的是用於參數傳遞過程中的一種機制。傳值調用中,只使用了實參的值。傳值調用機制里,形參是一個局部變數,其初始值為相應實參的值。在引用調用機制里,將實參的地址傳遞給形參,從表面上看是以實參變數取代形參,因此任何發生在形參上的改變實際上都發生在實參變數上。
二、例子
1、你定義一個函數void add(int a, int b),這里的a和b就是形參。
2、當你進行函數調用的時候,add(1, 2),這里的1和2就是實參。
(4)實參什麼時候釋放存儲空間擴展閱讀
形參和實參的特點
1、形參變數只有在被調用時才分配內存單元,在調用結束時,即刻釋放所分配的內存單元。因此,形參只在函數內部有效。函數調用結束返回主調用函數後則不能再使用該形參變數。
2、實參可以是常量、變數、表達式、函數等,無論實參是何種類型的量,在進行函數調用時,它們都必須有確定的值,以便把這些值傳送給形參。因此應預先用賦值,輸入等辦法使參數獲得確定值。
3、實參和形參在數量上,類型上、順序上應嚴格一致,否則就會發生類型不匹配的錯誤。
5. C語言問題
1: 好像能進行相等的判斷吧,如int a=2,b=3,c=4;if(a*b==b*c) 只不過在這樣的條件下,判斷得到的是個真假值,為0或是1;
2: 明這個也不一定,如實參定義為int a[5];而形參也定義為int a[5],這樣它們就共用一段內存空間,因為它們的數組名是一樣的,一維數組的數組名就是這數組的首地址;
3:實參是在定義時就分配了,而形參的要在被調用時才分配,而且用後空間就自動釋放了;
4:因為goto太靈活了,goto到不該goto的地方就出問題了,就像指針一樣,指到不該指的地方就危險了;
5:准確的說int *fip()是返回指向整型數的指針函數;
6. C語言中實參和形參是怎麼回事求詳細解答!!!
從
語法意義
上說,
形參
是
函數
內部為外部傳進來的
參數
取的名稱,而
實參
則是函數外部准備傳給函數的參數的名稱,這兩個是相對的從
內存
意義上說,形參是函數內的內存空間,實參是函數外的內存空間,每次調用都要將實參從函數外空間復制到函數內內存空間,因此改變形參的值對於實參一點影響也沒有。
形參:全稱為"形式參數"是在定義函數名和
函數體
的時候使用的參數,目的是用來接收調用該函數時傳如的參數.
實參:全稱為"實際參數"是在調用時傳遞個該函數的參數.
形參和實參的類型必須要一致,或者要符合隱含轉換規則,
當形參和實參不是指針類型時,在該函數
運行時
,形參和實
參是不同的
變數
,他們在內存中位於不同的位置,形參將實
參的內容復制一份,在該函數運行結束的時候形參被釋放,
而實參內容不會改變.
而如果函數的參數是指針類型變數,在調用該函數的
過程
中,傳個函數的是實參的地址,在函數體內部使用的也是
實參的地址,即使用的就是實參本身.所以在函數體內部
可以改變實參的值.
7. C語言:函數的形式參數存放在內存的
形參只是一個符號,不會分配具體的空間的..
當函數被調用的時候,具體給出的參數,也就是實參,其實是一份拷貝..
它的內存空間在該函數的堆中進行分配.
比如
定義函數
int
add(int
,int);
在主函數中
定義變數
int
x,
y..
調用函數
add(x,
y);
那麼在函數add的堆中會分配出空間,來保存實參x
y的拷貝..
而主函數中的
x
y
是在主函數的堆中保存的...
不曉得有沒有說明白..呵呵
8. 實參和形參都需要佔用存儲單元么
實參和形參各佔用獨立的存儲單元。
實參和形參是各占獨立存儲空間,函數調用過程中,實參向形參拷貝復制值。實參是個變數,形參也是個變數。
如果佔用同一片空間的話,編譯時候就不存在實參形參類型不匹配的報錯。參數傳遞中,形參值的改變不影響實參的值。
(8)實參什麼時候釋放存儲空間擴展閱讀
形參和實參的區別
1、形參變數只有在被調用時才分配內存單元,在調用結束時,即刻釋放所分配的內存單元。因此,形參只有在函數內部有效。函數調用結束返回主調函數後則不能再使用該形參變數。
2、實參可以是常量、變數、表達式、函數等,無論實參是何種類型的量,在進行函數調用時,它們都必須具有確定的值,以便把這些值傳送給形參。因此應預先用賦值,輸入等辦法使實參獲得確定值。
3、實參和形參在數量上,類型上,順序上應嚴格一致,否則會發生「類型不匹配」的錯誤。
4、函數調用中發生的數據傳送是單向的。即只能把實參的值傳送給形參,而不能把形參的值反向地傳送給實參。因此在函數調用過程中,形參的值發生改變,而實參中的值不會變化。
9. C語言局部變數是何時分配和回收空間的如圖中所有的變數他們的分配和銷毀都是在什麼時候呢
前面所以回答都不全面。
1、局部變數所佔用的內存空間的分配和銷毀,取決於編譯器的實現,編譯器在為了優化程序性能,可能有不同的策略來分配、釋放內存。比如:VC編譯器可能在函數入口處即分配這里的全部變數,GCC編譯器也可能真的在定義處才分配。
2、你該探究的應該是這些局部變數的生命期。這個b\c\d\e 的生命期都是開始於定義變數的地方,終止於語句塊結束的地方(對應的反花括弧處結束)
3、這是 C++ 的代碼,C 的代碼必須在函數開始處定義所有局部變數,以便於編譯器為所有局部變數准備棧空間。所以有你這個困惑(局部變數在函數入口時就全部入棧,這個說法是錯的么?)
10. 函數中的形參在什麼時候得到存儲空間
形參只是一個符號,不會分配具體的空間的..當函數被調用的時候,具體給出的參數,也就是實參,其實是一份拷貝..它的內存空間在該函數的堆中進行分配.比如 定義函數 int add(int ,int); 在主函數中 定義變數 int x, y..調用函數 add(x, y);那麼在函數add的堆中會分配出空間,來保存實參x y的拷貝..而主函數中的 x y 是在主函數的堆中保存的... 不曉得有沒有說明白..呵呵