Computer >> 컴퓨터 >  >> 프로그래밍 >> C 프로그래밍

C 함수의 인수와 반환값 – 네 가지 유형으로 이해하기

C 프로그래밍에서 함수는 크게 두 가지 기준으로 분류할 수 있습니다. 하나는 인수(매개변수)를 전달받는지 여부이고, 다른 하나는 값을 반환하는지 여부입니다.

함수는 인수를 받을 수도 있고 아무것도 받지 않을 수도 있으며, 마찬가지로 어떤 값을 반환할 수도 있고 아무것도 반환하지 않을 수도 있습니다. 이 두 가지 기준을 조합하면 C 함수를 다음과 같은 네 가지 유형으로 나눌 수 있습니다.

  • 인수가 없고 반환값도 없는 함수
  • 인수는 없지만 값을 반환하는 함수
  • 인수를 받지만 아무것도 반환하지 않는 함수
  • 인수를 받고 값도 반환하는 함수

1. 인수 없음 · 반환값 없음

예제 코드

#include <stdio.h>

void my_function() {
    printf("인수를 받지 않고, 아무것도 반환하지 않는 함수입니다.");
}

int main() {
    my_function();
    return 0;
}

실행 결과

인수를 받지 않고, 아무것도 반환하지 않는 함수입니다.

이 함수는 입력 인수를 전달받지 않으며, 반환형이 void로 선언되어 있으므로 호출한 곳에 아무런 값도 돌려주지 않습니다. 단순히 정해진 작업만 수행하는 형태입니다.

2. 인수 없음 · 값 반환함

예제 코드

#include <stdio.h>

int my_function() {
    printf("인수는 받지 않지만, 50을 반환합니다.\n");
    return 50;
}

int main() {
    int x;
    x = my_function();
    printf("반환된 값: %d", x);
    return 0;
}

실행 결과

인수는 받지 않지만, 50을 반환합니다.
반환된 값: 50

이 함수는 입력 인수를 받지 않지만, 반환형이 int이므로 호출자에게 정수 값을 돌려줍니다. return 문으로 반환된 값은 변수 x에 저장되어 이후에 활용할 수 있습니다.

3. 인수 있음 · 반환값 없음

예제 코드

#include <stdio.h>

void my_function(int x) {
    printf("%d를 인수로 받았지만, 아무것도 반환하지 않습니다.", x);
}

int main() {
    int x = 10;
    my_function(x);
    return 0;
}

실행 결과

10을 인수로 받았지만, 아무것도 반환하지 않습니다.

이 함수는 정수 인수를 하나 전달받아 그 값을 활용하지만, 반환형이 void이므로 값을 돌려주지 않습니다. 참고로 void 함수에서 return 50;처럼 값을 반환하면 컴파일 오류가 발생하므로 주의해야 합니다.

4. 인수 있음 · 값 반환함

예제 코드

#include <stdio.h>

int my_function(int x) {
    printf("인수를 받아 그 제곱 값을 반환합니다.\n");
    return x * x;
}

int main() {
    int res;
    res = my_function(12);
    printf("반환된 값: %d", res);
    return 0;
}

실행 결과

인수를 받아 그 제곱 값을 반환합니다.
반환된 값: 144

이 함수는 인수를 전달받고, 그 인수의 제곱을 계산하여 호출자에게 반환합니다. 입력을 처리하고 결과를 돌려주는 구조로, 실무에서 가장 널리 사용되는 함수 형태입니다.

마무리 정리

유형인수반환값대표적인 활용 예
1번 유형없음없음고정된 메시지 출력 등 단순 작업
2번 유형없음있음상수 반환, 내부 상태 조회
3번 유형있음없음화면 출력, 파일 쓰기 등 부수 효과 중심 작업
4번 유형있음있음계산 후 결과 반환 (가장 일반적)

함수 설계 시 어떤 유형이 적합한지 판단하려면, 먼저 "이 함수가 외부로부터 데이터를 받아야 하는가"와 "처리 결과를 호출자에게 알려야 하는가"를 생각해 보면 됩니다. 이 두 질문에 답하면 자연스럽게 적절한 함수 형태를 선택할 수 있습니다.