2010. 3. 13. 00:06

매개변수 전달방식

매개변수는 `parameter`라고도 하는데, 함수를 호출할 때 어떤 값을 넘겨주는 겁니다. 일종의 입력값이죠. 여기에는 `값에 의한 방식(Call by Value)`과 `참조에 의한 방식(Call by Reference)` 그리고 `이름에 의한 방식(Call by Name)` 등이 있는데, Call by Value와 Call by Reference가 보통 많이 활용됩니다.

둘의 차이점으로 Call by Value는 원본값이 복사본으로 넘겨져서 계산되므로 그 원래 값은 변하지 않고, Call by Reference는 값이 있는 주소를 참조하므로 원래 값이 변할 수 있다는 겁니다. 두 방식의 구분은 키워드에서 ByVal과 ByRef로 하며 생략하면 Call by Value 방식으로 수행합니다. 참고로 C언어도 Call by Value가 기본 방식입니다.

<% @Language=VBScript %>
<%
    Sub SwapByVal(ByVal a, ByVal b)
        Dim temp
        temp = b
        b = a
        a = temp
    End Sub
    Sub SwapByRef(ByRef a, ByRef b)
        Dim temp
        temp = b
        b = a
        a = temp
    End Sub
    Dim num1, num2
    num1 = 10
    num2 = 5
%>
<html>
<head>
<title>ByVal과 ByRef</title>
</head>
<body>
<%
 SwapByVal num1, num2
 Response.Write "num1은 " & num1 & ", num2는 " & num2 & "입니다.<br>"
 SwapByRef num1, num2
 Response.Write "num1은 " & num1 & ", num2는 " & num2 & "입니다.<br>"
%>
</body>
</html>