1樓:禕秀曼
具體這樣來理解:
過程中的引數列表,我們稱形參
呼叫過程時的引數列表,我們稱實參
在呼叫時,我們要將實參的值傳遞給形參,這樣過程才能拿這些資料參與計算並實現一些功能
那麼在傳遞的過程中,就存在這兩種傳遞方式
傳值時(byval),是先給形參開闢一個臨時地址,將實參的內容傳入這個臨時地址,這樣,傳遞後,形參與實參是在兩上不同的地址中,也就是說他們是相互獨立的
傳址時(byref),是直接將實參的地址傳遞給形參,這樣,形參與實參就共用一個地址,所以,形參內容的改變,也直接改變了實參的內容
通過上面的分析,你只要記得:
2樓:網海1書生
byval是傳值呼叫,也就是說呼叫的是引數的值,對這個值進行任何操作都不會影響到原引數,或者說呼叫前的引數和呼叫後使用的引數是不同的兩個引數;
byref是傳址呼叫,也就是說呼叫的是引數的記憶體地址,對這個地址進行的任何操作都會直接影響到原引數,或者說呼叫前的引數和呼叫後的引數實際上是同一個引數。
3樓:匿名使用者
byval 呼叫是傳遞的是值
byref 呼叫是傳遞的是引用 類似於 c 裡的地址
vb中byval與byref有什麼區別
4樓:大野瘦子
1、意思上的區別
byval是值傳遞,byref是地址傳遞。在交換函式裡單純交換值時沒有效果的,需要交換對應的地址。
2、賦值
在函式內部,引用引數(ref)被視為初始已賦值,輸出引數(out)被視為初始未賦值。
3、用法
引用引數(ref)在可以作為引用引數在函式成員呼叫中傳遞之前,必須已明確賦值,而輸出引數(out)在可以作為輸出引數在函式成員呼叫中傳遞之前不一定要明確賦值,在該函式成員正常返回前都必須已明確賦值。
byval和byref的用法
byref 是在過程中使用的數值和外面的數值相等了,並且一旦在過程中改變了這個數值,那麼引用過程的數值也修改了。一般來說預設就是byref。
byval 是為這個變數在記憶體中重新開闢一個地址進行儲存。在過程中修改這個數值不會影響這個數值。
應當宣告成過程,再ps一下,修改一下:
(1)byref
例如:sub byr(byref a as integer)'byref不寫也是對的
a=10
end sub
然後如果我們這樣用
dim x as integer
byr x
msgbox x
輸出10
(2)byval
例如:sub byv(byval a as integer)
a=10
end sub
然後再dim x as integer
byv x
msgbox x
5樓:匿名使用者
byval 與 byref(預設值)
這兩個是子過程的引數傳遞時,指定引數按什麼傳遞的
byval(按值傳遞)
byref(按地址傳遞)
具體這樣來理解:
過程中的引數列表,我們稱形參
呼叫過程時的引數列表,我們稱實參
在呼叫時,我們要將實參的值傳遞給形參,這樣過程才能拿這些資料參與計算並實現一些功能
那麼在傳遞的過程中,就存在這兩種傳遞方式
傳值時(byval),是先給形參開闢一個臨時地址,將實參的內容傳入這個臨時地址,這樣,傳遞後,形參與實參是在兩上不同的地址中,也就是說他們是相互獨立的
傳址時(byref),是直接將實參的地址傳遞給形參,這樣,形參與實參就共用一個地址,所以,形參內容的改變,也直接改變了實參的內容
通過上面的分析,你只要記得:
按值傳遞時(byval),形參的改變不會影響到實參
按址傳遞時(byref),形參的改變,會影響到實參
應用時,我們可以利用按址傳遞的過程,給一個子過程(sub過程)進行引數返回
例:dim a as integer,b as integer
a=1b=2
call aaa(a,b)
print a,b '得到的結果是2 3 (形參的改變影響到了實參)
call bbb(a,b)
pring a,b '得到的結果跟上面的一樣,2 3(形參的改變並沒有影響到這個實參)
sub aaa(i as integer,j as integer) '預設,則按址傳遞
i=i+1
j=j+1
end sub
sub bbb(byval i as integer,byval j as integer)
i=i+1
j=j+1
end sub
6樓:匿名使用者
精彩回答 下面 按值傳遞 結果是錯誤的昂 ab值不變 按值傳遞的話依然是1和2
7樓:匿名使用者
byref是按引用傳遞引數
byval是按值傳遞引數
一個例子:
a=0public sub aa(byval m as integer)
m=100
end sub
call aa
過程呼叫完後a 的值還是0
a=0public sub aa(byref m as integer)
m=100
end sub
call aa
過程呼叫完後a 的值是100
h是byval,j是byref
8樓:匿名使用者
h是byval,j是預設的byref
9樓:匿名使用者
byval(按值傳遞)
byref(按地址傳遞)
10樓:
byval是值傳遞;byref是地址傳遞。在交換函式裡單純交換值時沒有效果的,需要交換對應的地址。
主要區別:
1、引用引數(ref)在可以作為引用引數在函式成員呼叫中傳遞之前,必須已明確賦值,而輸出引數(out)在可以作為輸出引數在函式成員呼叫中傳遞之前不一定要明確賦值,在該函式成員正常返回前都必須已明確賦值。
2、在函式內部,引用引數(ref)被視為初始已賦值,輸出引數(out)被視為初始未賦值。
3、預設地,vb中的所有引數都是值傳遞。只有在引數的修飾符中明確包含out或ref,才是引用傳遞。但是需要知道的是,當引數的型別是引用型別時,你傳遞的是一個物件的引用而不是實際的物件。
vb中預設的是byval還是byref
11樓:枉生
byval 與 byref(預設值)
這兩個是子過程的引數傳遞時,指定引數按什麼傳遞的
byval(按值傳遞)
byref(按地址傳遞)
具體這樣來理解:
過程中的引數列表,我們稱形參
呼叫過程時的引數列表,我們稱實參
在呼叫時,我們要將實參的值傳遞給形參,這樣過程才能拿這些資料參與計算並實現一些功能
那麼在傳遞的過程中,就存在這兩種傳遞方式
傳值時(byval),是先給形參開闢一個臨時地址,將實參的內容傳入這個臨時地址,這樣,傳遞後,形參與實參是在兩上不同的地址中,也就是說他們是相互獨立的
傳址時(byref),是直接將實參的地址傳遞給形參,這樣,形參與實參就共用一個地址,所以,形參內容的改變,也直接改變了實參的內容
通過上面的分析,你只要記得:
按值傳遞時(byval),形參的改變不會影響到實參
按址傳遞時(byref),形參的改變,會影響到實參
應用時,我們可以利用按址傳遞的過程,給一個子過程(sub過程)進行引數返回
例:dim a as integer,b as integer
a=1b=2
call aaa(a,b)
print a,b '得到的結果是2 3 (形參的改變影響到了實參)
call bbb(a,b)
pring a,b '得到的結果跟上面的一樣,2 3(形參的改變並沒有影響到這個實參)
sub aaa(i as integer,j as integer) '預設,則按址傳遞
i=i+1
j=j+1
end sub
sub bbb(byval i as integer,byval j as integer)
i=i+1
j=j+1
end sub
12樓:匿名使用者
byval(表示按值傳遞)
byref(表示按地址傳遞),沒有特別宣告一般引數傳遞都是按值byval傳遞,幾乎所有程式語言都是這個傳遞方式!
vb中,byval和byref的用法有什麼區別啊?具體能舉個例子嗎?困惑~~~
13樓:匿名使用者
二樓正解!一樓的函式過程需要最後把引數賦值給函式名的…少一句賦值**,其他沒什麼問題!建議樓主看下關於sub過程與function過程的講解,不算難!!
14樓:匿名使用者
(1)byref
例如function byr(byref a as integer)a=10
end function
然後如果我們這樣用
dim x as integer
byr x
msgbox x
輸出10
(2)byval
例如function byv(byval a as integer)a=10
end function
然後再dim x as integer
byv x
msgbox x
輸出0,因為傳值,無法返回。
注:陣列、自定義型別只能通過byref傳,因為他們不是一個值,是一組值,一組值就只能傳記憶體地址了。
15樓:匿名使用者
byref說明白點就是在過程中使用的數值和外面的數值相等了,並且一旦在過程中改變了這個數值,那麼引用過程的數值也修改了。一般來說預設就是byref。
優點:節約一個記憶體地址的大小,並且實現數值的修改
byval指的是為這個變數在記憶體中重新開闢一個地址進行儲存。在過程中修改這個數值不會影響這個數值。
ps下,樓上的有些地方寫錯了function必須有返回值。應當宣告成過程。
再ps一下,他的解釋也是對的
對他修改一下
(1)byref
例如sub byr(byref a as integer)'byref不寫也是對的
a=10
end sub
然後如果我們這樣用
dim x as integer
byr x
msgbox x
輸出10
(2)byval
例如sub byv(byval a as integer)
a=10
end sub
然後再dim x as integer
byv x
msgbox x
vb中byval和byref有什麼不同
16樓:玲晶苒溪
byval 與 byref(預設值)
這兩個是子過程的引數傳遞時,指定引數按什麼傳遞的byval(按值傳遞)
byref(按地址傳遞)
具體這樣來理解
過程中的引數列表,我們稱形參…
excel中自帶的vba和vb有什麼區別
17樓:育知同創教育
vba是office中自帶的程式語言,而vb是獨立的開發程式,也可以說,vba是vb的一個子集,兩者**的編寫規則基本相同
vb 裡paramarray和byref有什麼區別
18樓:匿名使用者
paramarray ,使用 paramarray 關鍵字可以提供任意數目的引數。paramarray 關鍵字不能與 byval,byref,或 optional 一起使用。
byref,表示該引數按地址傳遞。byref 是 visual basic 的預設選項。
paramarray 關鍵字用於下列語句:
declare 語句
function 語句
sub 語句
使用 paramarray
關鍵字可以使函式接收數目可變的引數。在下面的定義中,firstarg 是按值傳遞的。
function calcsum(byval firstarg as integer, paramarray otherargs())
dim returnvalue
'如果用如下**呼叫該函式:
returnvalue = calcsum(4, 3 ,2 ,1)
'則區域性變數被賦予以下值:firstarg = 4,
'otherargs(1) = 3,otherargs(2) = 2,等等。
'假設預設陣列下界 = 1。
byref 關鍵字用於下列語句:
call 語句
declare 語句
function 語句
property get 語句
property let 語句
property set 語句
sub 語句
vb中cint與int區別,VB中CInt與Int區別
一 主體不同 1 cint 返回表示式,此表示式已被轉換為 integer 子型別的 variant。2 int 整數資料型別的資料 是表示某種數學整數 範圍的資料型別。二 處理過程不同 1 cint 將其四捨五入為最接近的偶數。例如,0.5 被四捨五入為 0,而1.5 被四捨五入為 2。2 int...
VB中怎麼區分賦值與等號,VB中if語句的條件裡的等號是表示「賦值」還是判斷等號兩邊是否相等。比如if a b 是把b賦給a
邏輯運算中就是等於號,否則就是賦值號。舉例如下 條件 判斷語句中 作為關係運算 比如 if x 2 then while x 2 until x 2 其餘語句中作為賦值 x 2x x 2 vb6.0中關於 號有以下幾類用法 1 比較運算子,用來比較表示式。比較運算子示例 本示例示範各種 比較運算子 ...
vb中dim stastic public有什麼區別
dim任何地方几乎都可以使用,用作定義變數的謂詞。dim定義的變數是臨時變數,隨用隨釋放static和dim一樣,但是隻要定義一次在這個變數的作用域中就不會再次重新產生變數,而是沿用老變數 也就是 一次定義,終身受用 public一般用於定義類等內部宣告變數的許可權 是否允許為外部訪問 dim 可以...