..

Search

35) 인수 전달 방법

35) 인수 전달 방법

인수 전달 방법


인수 전달 방법

함수를 호출할 때에는 함수에 필요한 데이터를 인수(argument)로 전달해 줄 수 있습니다.

이렇게 함수에 인수를 전달하는 방법에는 크게 다음과 같이 두 가지 방법이 있습니다.

 

1. 값에 의한 전달(call by value)

2. 참조에 의한 전달(call by reference)


값에 의한 전달(call by value)

값에 의한 전달 방법은 인수로 전달되는 변수가 가지고 있는 값을 함수 내의 매개변수에 복사하는 방식입니다.

이렇게 복사된 값으로 초기화된 매개변수는 인수로 전달된 변수와는 완전히 별개의 변수가 됩니다.

따라서 함수 내에서의 매개변수 조작은 인수로 전달되는 변수에 아무런 영향을 미치지 않습니다.

 

예제

void Local(int);

 

int main(void)

{

    int var = 10;

    cout << "변수 var의 초깃값은 " << var << "입니다." << endl;

 

    Local(var);

    cout << "Local() 함수 호출 후 변수 var의 값은 " << var << "입니다.";

    return 0;

}

 

void Local(int num)

{

    num += 10;

}

코딩연습 ▶

실행 결과

변수 var의 초기값은 10입니다.

Local() 함수 호출 후 변수 var의 값은 10입니다.

 

위의 예제에서 Local() 함수의 매개변수 num는 인수로 변수 var의 값을 전달받습니다.

따라서 함수 내에서 매개변수 num의 값을 아무리 변경하더라도 원래 인수로 전달된 변수 var의 값은 절대 변경되지 않습니다.


참조에 의한 전달(call by reference)

참조에 의한 전달 방법은 인수로 전달된 변수의 값을 복사하는 것이 아닌, 원본 데이터를 직접 전달하는 것입니다.

C언어에서는 이러한 작업을 포인터를 사용하여 인수로 전달된 변수의 주소값을 전달합니다.

하지만 C++에서는 이러한 작업을 참조자(reference)를 사용하여 전달할 수 있습니다.

 

C++ 참조자에 대한 더 자세한 사항은 C++ 참조자 수업에서 확인할 수 있습니다.

 

C++ 참조자 수업 확인 =>

 

예제

void Local(int&);

 

int main(void)

{

    ...

    Local(var);

    ...

}

 

void Local(int& num)

{

    num += 10;

}

코딩연습 ▶

실행 결과

변수 var의 초기값은 10입니다.

Local() 함수 호출 후 변수 var의 값은 20입니다.

 

위의 예제에서 Local() 함수의 매개변수 num는 인수로 변수 var의 참조를 전달받습니다.

따라서 함수 내에서 참조자 num의 값을 변경하면 원래 인수인 변수 var의 값도 같이 변경됩니다.


main() 함수의 인수 전달

main() 함수는 프로그램이 실행되면 제일 먼저 자동으로 호출되는 함수입니다.

이러한 main() 함수도 함수이기 때문에 인수를 전달받을 수도 있고, 반환값을 가질 수도 있습니다.

 

main() 함수의 원형은 다음과 같습니다.

원형

void(또는 int) main(int argc,char *argv[]);

 

main() 함수의 첫 번째 인수인 int형 변수 argc는 인수로 전달되는 문자열의 개수를 명시합니다.

두 번째 인수 char형 포인터의 포인터인 argv는 인수로 전달된 각각의 문자열이 포함되는 배열을 가리킵니다.


연습문제