본문 바로가기

IT 정보

[C 언어] 매개변수와 반환값을 사용하는 함수

* 본포스팅은 <김변수와 시작하는 코딩생활 with C언어>에서 발췌한 내용으로 작성되었습니다.

 

 

✔ 매개변수와 반환값을 사용하는 함수

매개변수와 반환값이 있는 함수에 대해 알아보겠습니다. 제빵 과정을 함수에 빗댄 아래 그림을 보면서 함수, 매개변수, 반환값이 무엇일지 유추해 보세요.

 

 

위 그림에서 빵 만들기 기계는 재료를 받아 우리가 원하는 결과물로 바꾸어 줍니다. 즉 ‘빵 만들기’라는 이름을 가진 함수에 밀가루와 달걀을 넣은 결과로 우리는 빵이라는 결과물을 얻을 수 있습니다. 여기서 밀가루와 달걀은 매개변수, 즉 함수가 결과물을 만들기 위해 사용하는 재료입니다. 그리고 빵은 함수의 결과물인 반환값과 같습니다. 정리해 보면 함수는 필요한 재료를 받아 우리가 원하는 결과물을 얻을 수 있도록 작동하는 ‘분리된 코드 덩어리’입니다. 여기서 재료는 매개변수, 결과물은 반환값, 함수의 이름 앞에 붙은 반환 자료형은 반환값의 자료형입니다.

 

이제 매개변수와 반환값에 대한 개념을 확실히 익혔으니 코드로 살펴보겠습니다. 다음은 매개변수를 사용하는 함수가 있는 코드 예시입니다.

 

 

→ 3번 줄: main 함수 아래에서 정의한 printNumber 함수와 매개변수 int x를 선언합니다.
  6번 줄: printNumber 함수의 매개변수 int x에 인자로 99를 넣어 호출합니다.
  11번 줄: int x를 매개변수로 가지는, void 자료형 함수 printNumber를 정의합니다.
  12번 줄: 매개변수로 받은 x 값을 printf 출력 함수에 넣어 출력합니다.

 

printNumber 함수의 매개변수로 선언한 int x는 printNumber 함수 내부에서만 사용할 수 있는 변수입니다. 변수를 사용하는 범위에 대해서는 <5-3. 변수의 사용 영역>에서 세부적으로 다룰 예정입니다. 지금은 매개변수를 정의한 함수 내부에서만 매개변수를 사용할 수 있다는 것만 기억하면 됩니다.여러분이 매개변수를 사용하며 헷갈릴 수 있는 내용을 살펴보겠습니다. 매개변수는 함수가 실행되는 동안만 사용되는 값입니다. 함수를 호출할 때마다 새로운 매개변수 값을 할당하여 사용하기 때문에 다른 결과를 얻을 수 있습니다. 이때 함수의 정의에서 정의되는 변수를 매개변수(Parameter)라고 하며, 함수를 호출할 때 전달하는 값은 인자(Argument)라고 합니다. 즉, 함수 호출 과정에서 매개변수에는 인자를 할당하여 사용한다고
볼 수 있습니다. 예시와 함께 설명하겠습니다.

 

 

  3번 줄: main 함수 아래에서 정의한 printNumber 함수와 매개변수 int x를 선언합니다.
  6번 줄: printNumber 함수의 매개변수 int x에 99를 넣어 호출합니다.
  7번 줄: printNumber 함수의 매개변수 int x에 0을 넣어 호출합니다. 매개변수 x에는 6번 줄에서 함수를 호출하며 사용한 99가 아닌, 0이라는 값이 새로 할당됩니다.
  12번 줄: int x를 매개변수로 가지는, void 자료형 함수 printNumber를 정의합니다.
  13번 줄: 매개변수로 받은 x 값을 printf 출력 함수에 넣어 출력합니다.


함수는 우리가 원하는 특정 기능을 수행하는 코드 덩어리입니다. 따라서 printNumber라는 함수의 매개변수 int x에 원하는 값을 넣어 주면 해당 값에 맞는 결과를 출력합니다. 이 값이 앞에서 설명한 ‘’인자’입니다. 이전에 int x 매개변수에 저장한 99라는 값은 7번 줄에서 0이라는 값으로 다시 할당되어 올바른 함수의 결과를 얻을 수 있었습니다.

 

이번엔 매개변수와 반환값을 모두 사용해 보겠습니다. 정수형 매개변수 두 개에 인자를 받아 두 인자의 합을 반환하는 함수를 작성해 보겠습니다.

 

 

→  3번 줄: main 함수 아래에서 정의한 sum 함수와 매개변수 int x, y를 선언합니다.
→  6번 줄: sum 함수의 매개변수 int x에 99를, int y에 1을 넣어 호출합니다.
→  11번 줄: int형 반환값과 매개변수 int x, y를 가진 sum 함수를 정의합니다.
→  12번 줄: 매개변수로 받은 int x와 int y를 합하여 결괏값을 반환합니다.


[코드 5-2-3]에서 sum 함수는 매개변수 int x, y를 받아 더하고 결과로 이 정수형 데이터를 반환합니다. sum 함수는 int 자료형의 반환값을 가진 함수이므로 함수의 이름 앞에 작성하는 반환 자료형으로int를 작성해야 합니다. 만약 반환 자료형을 잘못 작성하면 <3-5. [더 알아보기] 형 변환>에서 배운 형 변환이 일어나기 때문에 올바르지 않은 결과가 출력되거나 에러가 발생할 수 있습니다. 간단한 코드를 통해 살펴보겠습니다.

 

 

→ 6번 줄: sum 함수의 매개변수 int x에 99를, int y에 1을 넣어 호출합니다. 하지만, sum 함수의 반환 자료형이 void이므로 아무런 값을 반환할 수 없습니다. 따라서 에러가 발생합니다.

 

 

 


 

 

 

 

《김변수와 시작하는 코딩생활 with C언어》

예스24 / 교보문고 / 알라딘

 

 

반응형