StartprogrammingusingObjectPascal:ProceduresAndFunctionsOutputParameters

From 흡혈양파의 번역工房
Jump to: navigation, search

프로시저와 함수의 출력 인자

이전 함수 사용에서 함수의 결과로서 하나의 값만 되돌려줄 수 있다는 것을 알았는데, 어떻게 하면 함수나 프로시저에서 하나 이상의 값을 되돌려 줄 수 있을까요?

그럼 실험을 해봅시다.

procedure DoSomething(x: Integer);
begin
    x:= x * 2;
    Writeln('From inside procedure: x = ', x);
end;

// main

var
    MyNumber: Integer;
begin
    MyNumber:= 5;

    DoSomething(MyNumber);
    Writeln('From main program, MyNumber = ', MyNumber);
    Writeln('Press enter key to close');
    Readln;
end.

이 예제에서는 DoSomething 프로시저가 x 를 정수 값으로 받은 다음에 2 를 곱하고 이 값을 표시합니다.

프로그램의 메인 부분에서는 MyNumber 를 정수형으로 선언했고, 5 라는 값을 넣었으며, DoSomething 프로시저에 인자로 전달했습니다. 이 경우 MyNumber의 값(5)은 변수 x 에 복사될 것입니다.

함수를 호출하고 나면 x 의 값은 10 이 되겠지만, 함수를 호출한 다음에 MyNumber의 값을 표시할 때는 여전히 5 를 지니고 있는 것을 알게 될 것입니다. 이는 MyNumber와 x 는 일반적으로 서로 다른 메모리 공간에 위치하고 있다는 뜻입니다.

본래 MyNumber 인자에 영향을 주지 않는 이러한 인자 전달의 유형을 값에 의한 호출 ( calling by value ) 이라고 부릅니다. 이런 값을 전달하기 위해 상수 값을 사용할 수도 있습니다.

DoSomething(5);