본문 바로가기

매개변수와 실인자의 구분 (Parameters and Arguments) 본문

💘 C++/함수

매개변수와 실인자의 구분 (Parameters and Arguments)

Hyonii 2022. 7. 24. 15:33

매개변수와 실인자의 구분 (Parameters and Arguments)

큰 프로그램을 만들 때 함수를 잘 사용하는 것은 중요한 일이다.

함수를 정확하게 이해하기 위해서 매개변수 Parameter와 인자 Argument 이 두 용어를 정확하게 구분 짓고 넘어가겠다.

매개변수(Function parameter)

매개변수(Function parameter)는 함수에서 전달받은 인수를 함수 내부로 전달하기 위해 사용하는 변수를 의미한다.

즉, 매개변수는 함수 선언에 선언된 변수다.

 

여기 foo 라는 함수의 prototype(원형)이 있다.

정수형 변수 int x와 int y가 foo 함수의 파라미터이다. 이렇게 선언을 해주는 것이다.

foo 앞에 int는 return 타입이 int라는 뜻이다.

 

여기는 함수의 실제 몸체가 정의 되어있다.

코드를 보면 매개변수 x와 y에 어떤 값이 들어있는지에 따라 return 하는 값이 달라진다는 것을 알 수 있다.

 

그래서 이 매개변수라는 것은 함수가 어떤 기능을 하는지를 조절하거나 바꿔주는 기능을 한다.

수학에서 이야기하는 매개변수와 거의 비슷한 의미를 가지고 있다.

 

주의해야 하는 점은

 

이 int x와 int y가 마치 변수가 선언되는 것과 비슷한 형태를 하고 있다.

함수 블록 내에서 매개 변수가 선언되지는 않았지만,

함수 매개 변수는 지역 범위(local scope)를 가지고 있다.

 

이것은 함수가 호출될 때 생성되며, 함수 블록이 끝나면 소멸한다는 의미다.

얘네 둘은 함수가 끝남과 동시에 os로 메모리가 반납된다.

이 지역변수 두 개는 사라지게 되는 것이다.

 


인자(argument)

인자(argument)는 호출자가 함수에 전달한 값이다.

함수가 호출되면 함수의 모든 매개변수가 변수로 생성되고, 인자의 값은 매개변수로 복사된다.

 

int x = 1, y = 2; 변수 두개를 정의를 했다.

main()에서 foo함수를 호출하는데 x와 y를 사용하지 않고 6,7이라는 값을 직접 넣어주어도 이 함수는 작동한다.

함수 foo가 작동할 때 필요한 것은 x라는 변수에 들어오는 값이고, y라는 변수에 들어오는 값이기 때문이다.

이때 6과 7을 argument 인자라고 부른다.

실매개변수, 실인자라고 부르기도 한다.

arguments와 actual parameters 이 두 가지는 혼용되는 용어니까 바꿔가며 사용해도 문제없다.

 

그리고 x라는 변수를 직접 넣을 수도 있다.

이때 foo 함수에서는 1이라는 값을 받아서 전달을 해주게 된다.

 

x에 들어있는 1이라는 값이 arguement가 되는 것이고
이 매개변수 x로 전달이 되게 되는 것이다.

여기서 주의해야 할 점은 항상 x에 있는 값만 전달되는 것은 아니다.

추후 포스팅에서 값에 의한 전달, 참조에 의한 전달, 주소에 의한 전달 세 가지를 설명드리겠다.

 

y+1에서는

 

2라는 값이 있고

2에다가 1을 더하면 3이니까 

이 경우에는 3이라는 값이 argument이다.

 

그 argument가 foo 함수의 y parameter로 전달이 되는 것이다.

이때 내부적으로는 int y가 선언이 되고 초기화가 되면서 7이라는 값이 복사해서 들어간다.

 

매개변수와 인자라는 용어를 구분해서 설명드렸다.

이어지는 포스팅에서는 argument와 parameter들이 여러 가지 복잡한 조합을 갖는 것에 대해서 설명드리겠다.

Comments