본문 바로가기

프로그래밍

parameter와 argument의 차이?

728x90
반응형

코딩을 할 때 함수를 만들고 쓰면서 문득 용어에 대해 의문이 들었다. 함수를 통해 전달하는 변수들을 보통 매개변수라고 하거나 아니면 파라미터라고 부르기도 하다가 가끔 인자라고 부르기도 했다. 그리고 문서를 보면 parameterargument라는 용어가 자주 나오는데 뭐 대충 내용을 이해하는데는 문제가 없었지만 둘의 차이를 정확히 몰라서 혼용하고 있다는 걸 깨달았다.

 

일단 영어니까.. 네이버 사전에 검색해봤다.

 

 

 

네이버 영어사전

 

 

 

오잉? 이게 아닌거 같은데..

그냥 영어 뜻 말고 프로그래밍 관점에서 사용되는 의미를 파악해야 할 것 같았다. 역시 그렇다면 위키피디아가 최고지!

 

 

 

 

위키피디아

 

 

 

 

아하! parameter는 매개변수가 맞고, argument는 전달인자라고 불리는구나!

오케이. 여기까지. 오늘 공부 끝! 하기엔 역시 좀 찝찝해서 머리가 아프지만 무슨 의미인지 해석해보기로 했다.

 

매개변수란 변수의 특별한 한 종류로서, 함수 등과 같은 서브루틴...

 

응? 서브루틴?

 

 

 

네이버 지식백과 서브루틴

 

 

 

 

좋아, 그러니까 독립해서 사용되지 않고 부품으로써 사용되는 함수의 한 종류로구나. 자 다시 매개변수로 돌아가서..

 

...서브루틴의 인풋으로 제공되는 여러 데이터 중 하나를 가리키기 위해 사용된다.

 

아하! 함수이름 옆 소괄호에 입력하는 여러 데이터들을 말하는구나.

func mySubroutine(a: String, b: Int) { // a와 b는 매개변수(parameter)
    ...
}

 

매개변수는 알겠고, 그럼 전달인자(argument)는 뭐가 다른 거지?

 

여기서 서브루틴의 인풋으로 제공되는 여러 데이터들을 전달인자(argument) 라고 부른다. 

 

엥 뭐야? 서브루틴의 인풋으로 제공되는 여러 데이터라는 말이면.. 파라미터랑 똑같은 거 아닌가?

 

보통 매개변수의 목록은 서브루틴의 정의 부분에 포함되며, 매번 서브루틴이 호출될 때마다 해당 호출에서 사용된 전달인자들을 각각에 해당하는 매개변수에 대입시켜 준다.

 

그렇지. 매개변수는 정의 부분이고, 전달인자는 함수를 호출할 때 사용된다는 말이구나. 쉽게 말해서 매개변수는 전달할 변수들의 이름에 해당하고, 실제 입력되는 값을 전달인자라고 하는 거네.

 

func mySubroutine(a: String, b: Int) { // 정의된 a와 b는 매개변수(parameter)
    ...
}


mySubroutine(a: "argument", b: 0) // 전달할 값인 "argument"와 0은 전달인자(argument)

 

알고 보면 간단하네. 이 정도면 앞으론 매개변수와 전달인자를 헷갈리지 않을 것 같다.

 

 

 

참고: https://ko.wikipedia.org/wiki/%EB%A7%A4%EA%B0%9C%EB%B3%80%EC%88%98_(%EC%BB%B4%ED%93%A8%ED%84%B0_%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D)#cite_note-1

반응형