C & C++

C언어 함수 선언 방법 경우의 수 정리(input, return 타입별)

jimmy_AI 2022. 5. 18. 21:42
반응형

C언어 function 선언 방법 예제

C언어에서 함수를 선언하는 방법을 input 자료와 return되는 자료의 유형에 따라

분류하여 정리해보도록 하겠습니다.

 

기본적으로 C언어 함수 선언 코드의 틀은 다음과 같이 구성됩니다.

 

반환자료형 함수이름(input1자료형 input1이름, input2자료형 input2이름, ...){

~함수 코드~

return 반환값;

}

 

이제 반환자료형 input자료형의 유형에따라 함수 선언 방법의 예시를 살펴보겠습니다.

 

 

1. input과 return 모두 없는 경우

가장 간단한 경우로, input 자료 없이 호출되고 반환 값도 없는 경우입니다.

반환자료형은 void로 선언하며, input 칸은 비워도되고, void로 설정해도 무관합니다.

 

return 부분은 생략해도 좋고, return ; 형태로 함수를 종료해도 괜찮습니다.

아래 4가지 케이스는 모두 거의 같은 기능을 수행하며, 전부 가능한 선언 방법입니다.

// 모두 가능한 선언 방법
void function1(){
  printf("hello world!\n");
}

void function2(void){
  printf("hello world!\n");
}

void function3(){
  printf("hello world!\n");
  return;
}

void function4(void){
  printf("hello world!\n");
  return;
}

 

 

2. input만 있고 return은 없는 경우

input 자료만 있는 경우는 반환자료는 앞 부분과 마찬가지로 void로 표현하며,

input 자료가 여러 개인 경우는 콤마(,)로 구분하여 자료형과 변수 이름을 차례로 적어줍니다.

 

return 부는 1번과 마찬가지로 생략하거나 return ;으로 적어주면 됩니다.

// int 자료 1개를 input으로 받는 경우
void function1(int var1){
  // 함수 코드 //
}

// int, double 자료를 1개씩 input으로 받는 경우
void function2(int val1, double val2){
  // 함수 코드 //
}

참고로, 포인터 자료도 input으로 받는 것이 가능하긴 합니다.

반응형

3. input은 없고 return만 있는 경우

return 받을 값이 있는 경우는 반환자료 부분에 해당하는 자료형을 써주어야합니다.

이 때, 원칙적으로 반환 값의 개수는 1개만 가능하며, 여러 개의 값을 반환하고 싶다면

포인터 혹은 구조체를 반환하는 형태로 우회해야합니다.

 

input 부분은 1번 유형과 마찬가지로 비우거나 void로 남겨두면 되며,

함수가 종료되는 부분에서 매칭되는 자료형의 값을 return해주어야 합니다.

// input : 없음, return : int형 자료 예시
int function1(){
  int a = 1;
  // 함수 코드 //
  return a;
}

// input : 없음, return : double형 자료 예시
double function2(void){
  double b = 1.0;
  // 함수 코드 //
  return b;
}

 

 

4. input과 return 모두 있는 경우

input과 return이 모두 있는 경우는

반환자료형 return 부는 3번 유형과 동일하게 작성해주면 되며,

input 부는 2번 유형과 같은 식으로 써주는 것을 조합하시면 됩니다.

// input : int 자료 1개, return : int형 자료 예시
int function1(int var1){
  int a = 1;
  // 함수 코드 //
  return a;
}

// input : int 자료 1개, double 자료 1개, return : double형 자료 예시
double function2(int var1, double var2){
  double b = 1.0;
  // 함수 코드 //
  return b;
}