컴퓨터관련
ByVal, ByRef... 매개변수...비주얼베이직...펌
맘편한넘
2010. 11. 22. 19:57
비베개념으로 설명하자면,
byref는...
넘겨준 변수와 받은 변수를 동일한 변수로 취급하는겁니다.
call callbyref(a)
private sub callbyref(byref i as integer)
에서 i는 그저 a의 별칭일뿐, i가 곧 a라고 생각하시면 됩니다.
즉 위 함수의 실제코드는...
private sub command1_click()
dim a as integer
....
dim a as integer
....
private sub callbyref( a -- command1_click에서 동일변수임)
a=10
end sub
a=10
end sub
반면 byval은 별다른 변수에 복사되는 개념입니다.
즉, i와 a는 완전 별개의 변수입니다.
call callbyval(a)
private sub callbyval(
byval i as integer <=요기부분
)
에서...요기라고 표시된 부분에서 숨겨진 코드는
private sub callbyval
(
dim i as integer
i =a <=call callbyval(a)
)
입니다. 대입연산자가 복사이므로 그래서 복사에 의한 인자 전달이라고 부릅니다.
-----------------------
C언어 개념에서 보면, 더 쉽습니다.
byref는 포인터에 의한 전달, byval은 값에 의한 전달입니다.
private sub command1_click()
dim a as integer
....
dim a as integer
....
private sub callbyref
(
i as 정수포인터
i =&a;
)
*i =10
end sub
*i =10
end sub
call callbyval(a)
private sub callbyval(
byval i as integer
i =a
)
i=100
end sub
end sub
입니다.