함수 형태

함수 형태 분류

함수 형태는 여러가지가 존재 할 수 있습니다.
함수의 이름을 만들고 , 그 함수의 기능을 생성하고 , 매개 변수와 반환 값을 정하면 함수가 정의 됩니다. 즉 하나의 함수가 작성됩니다.
그런데 , 함수는 인자와 반환 값의 존재 여부에 따라 아래와 같이 4가지로 나누어 질 수 있습니다.

  • 매개 변수와 반환 값이 모두 존재하는 함수
  • 매개 변수 있고 반환 값이 없는 함수
  • 매개 변수 없고 반환 값이 있는 함수
  • 매개 변수와 반환 값이 모두 없는 함수

매개 변수와 반환 값이 모두 있는 함수

대부분의 함수는 매개 변수, 반환 값을 모두 갖고 있습니다.
가장 일반적인 형태라고 할 수 있습니다.
아래 예제를 봅시다.

1.int Add (int x , int y)//맨 앞의 int가 반환 형태,소괄호 안의 int가 매개변수 
2.{
3.  int sum = x + Y ;
4.   return sum ;
5.}

1행 : 함수 이름은 Add 입니다. 반환 값의 형태는 제일 처음의 int 이고 매개 변수는 소괄호 안에 int 타입 정수가 x , y 총 2개 입니다.
2행 : Add 함수 몸통의 시작입니다.
3행 : 이 함수의 기능은 두 정수를 더하는 함수임을 알 수 있습니다.
4행 : sum 에 저장된 값을 함수를 호출한 곳으로 반환하는 return 문 입니다.
5행 : Add 함수의 몸통의 끝 입니다.

위 예제는 매개 변수가 x , y 로 2 개 입니다. 매개 변수는 개수의 제한이 없으나 반환 값이 존재한다면 반드시 1 개만 존재 해야 합니다.

매개 변수 있고 반환 값이 없는 함수

함수는 반환 값이 반드시 존재 해야 하는 것은 아닙니다.
그러나, 존재한다면 반드시 1 개만 가능합니다.
아래 예제를 봅시다.

1. void function ( int number)
2. {
3.      printf(" number 출력 : %d \n " , number) ;
4. }

1행 : void 는 함수의 반환 값이 없다는 의미입니다.
매개 변수는 int 타입의 변수 number 가 1 개 있습니다.
따라서 위 예제는 3 행의 printf 함수만 실행하고 어떠한 반환 값도 돌려 주지 않습니다.

매개 변수 없고 반환 값이 있는 함수 형태

매개 변수는 함수에서 반드시 있어야 하는 것은 아닙니다.
그런데 존재한다면 함수의 반환 값과 달리 그 개수의 제한은 없습니다.
아래 예제를 봅시다.

1. int function ( void )
2. {
3.   int variable ;
4.   scanf ( "%d" , &variable) ;
5.   return variable ;
6. }

1행의 소괄호 즉 매개 변수가 있어야 할 자리에 void 가 있습니다.
따라서 이 함수는 전달 받을 인자(매개 변수)가 없는 것입니다.
4행의 scanf 함수를 사용하여 단순히 입력 받는 함수일 뿐입니다.

매개 변수와 반환 값이 모두 없는 함수 형태

아래 예제를 봅시다.

void function (void)
{
   printf( " 안녕하세요 반갑습니다. " \n ");
}

코드 첫 행의 반환 값 타입 , 매개 변수 타입 등이 모두 void 가 있습니다.
따라서 이 함수는 전달 받는 인자도 없고 반환할 함수 값도 없는 단순한 메세지 출력 함수 입니다.

return 문

반환 값의 형태가 void 인 함수에는 return 문을 사용할 수 없을까? 라는 의문이 들 수 있습니다. 그 대답은 사용 가능하다 입니다.
return문은 2 가지의 문법적 기능을 합니다.
첫째 , 함수를 벗어납니다.
둘째 , 반환 값을 함수를 호출한 곳으로 돌려 줍니다.
아래 예제를 봅시다.

void function (int number)
{
  if (number > 0 )
     return ;
    ...
    ...
}

위 함수는 반환 형태가 void 입니다. 따라서 돌려 줄 값은 없지만 return문이 존재하므로 함수에서 return 아래의 부분들을 수행할 필요 없이 return을 만나면 바로 함수를 탈출할 수 있습니다.