본문 바로가기

프로그래밍/C 기초

[C언어 강좌] #22 - 함수의 인자, 리턴

이번시간에는 함수의 인자와 리턴에 대해서 자세하게 알아봅시다.

함수를 소개하는시간에 언급되었던 것들이죠? 그리고 인자는 저번 매개변수 시간에 더 알아봤었습니다.



두 정수의 합을 구하는 함수를 만들어봤습니다.

함수를 호출할때 넘겨주는 값이 인자라고 했었죠. 여기서는 10과 30이 인자가 됩니다.


넘겨주는 인자의 개수는 항상 매개변수의 개수와 같아야합니다.

그리고 첫번째 인자는 첫번째 매개변수에 대입되고 두번째 인자는 두번째 매개변수에 대입되는식이라고 보시면 됩니다.



그리고 위와같이 변수를 넣을수도 있고 연산을 한것도 인자로 들어갈수 있습니다.

식이 있으면 항상 그자리에는 결과가 남게되서 그 결과가 인자로 들어가는것이죠.


물론 함수를 호출해서 반환된 값을 또 인자로 넣어줄수도 있습니다.

반환된 값은 함수를 호출한 자리에 들어가기때문에 인자로 넣어줄곳에 함수를 호출해주면 됩니다.



이런식으로 정상적으로 출력됩니다. 인자가 먼저 계산되고 함수가 호출되는겁니다.

한번 코드를 짜서 순서를 직접 확인해봅시다.



위와같이 인자가 먼저 계산되고 함수가 호출된것을 볼수 있습니다.

그리고 뒤에있는 인자가 먼저 계산되었네요. 사실상 인자의 계산에는 순서가 없습니다.

이건 컴파일러에따라 다를수 있습니다. 프로그램을 만들때 순서를 고려해야한다면 이런점을 생각해주시면 되겠습니다.


일단 함수를 호출하기 전에 인자가 먼저 계산되도록 되있기때문에 인자에 있는 함수가 먼저 호출되었습니다.


그리고 반환되는 값이 있기때문에 위와같은 코드도 가능합니다.

그 함수에서 반환된 값이 인자로 들어가서 그 후에 함수가 호출된것이죠.


이런식으로 반환된 값은 함수를 호출한 자리에 들어가게 되있습니다.

return은 이런식으로 값을 반환하는 역할을 합니다. 하지만 그것 말고도 또다른 역할이 있습니다.

그건 바로 함수를 종료하는것입니다. return을 만나게되면 그 함수는 종료됩니다. 반복문에 break처럼요.

그리고 위 코드의 add함수에 있는 return a+b처럼 식이 있을경우 먼저 그 식이 계산된 후에 반환됩니다.