C언어 초급 - 9장: 함수 (Function) (9.2 매개변수와 반환값)

2025. 2. 24. 11:31프로그래밍 언어/C

9.2 매개변수와 반환값

C 언어에서 함수(Function)매개변수(Parameter)와 반환값(Return Value) 을 가질 수 있습니다.
함수를 정의할 때 매개변수를 통해 값을 전달하고, 반환값을 통해 실행 결과를 돌려받을 수 있습니다.


1. 매개변수가 있는 함수

1.1 매개변수란?

  • 매개변수(Parameter)함수에 값을 전달하는 변수입니다.
  • 함수 정의 시 매개변수 목록을 지정하며, 함수 호출 시 전달된 인자를 받아 사용합니다.

1.2 매개변수의 기본 구조

반환형 함수이름(자료형 매개변수1, 자료형 매개변수2, ...);

📌 함수 호출 시 전달한 값(인자, Argument)이 매개변수로 복사됨.
📌 매개변수의 개수는 제한이 없으며, 여러 개 사용 가능.
📌 매개변수가 없는 경우, () 안을 비워두거나 void를 사용.


1.3 매개변수가 있는 함수 예제

아래 예제는 두 개의 정수를 입력받아 덧셈을 수행하는 함수입니다.

#include <stdio.h>

// 함수 선언
void addNumbers(int a, int b);

int main() {
    addNumbers(5, 3);  // 함수 호출 (5와 3 전달)
    addNumbers(10, 20);

    return 0;
}

// 함수 정의
void addNumbers(int a, int b) {
    printf("%d + %d = %d\n", a, b, a + b);
}

출력 결과

5 + 3 = 8
10 + 20 = 30

📌 설명

  • addNumbers(5, 3) 호출 시, a = 5, b = 3으로 값이 복사됨.
  • printf("%d + %d = %d\n", a, b, a + b); → 덧셈 결과 출력.

1.4 여러 개의 매개변수를 사용하는 함수

매개변수의 개수는 제한이 없으며, 여러 개 사용 가능합니다.

#include <stdio.h>

// 함수 선언
void printInfo(char name[], int age, double height);

int main() {
    printInfo("Alice", 25, 167.5);
    printInfo("Bob", 30, 175.2);

    return 0;
}

// 함수 정의
void printInfo(char name[], int age, double height) {
    printf("이름: %s, 나이: %d, 키: %.1fcm\n", name, age, height);
}

출력 결과

이름: Alice, 나이: 25, 키: 167.5cm
이름: Bob, 나이: 30, 키: 175.2cm

📌 매개변수는 여러 개 사용 가능하며, 자료형이 서로 달라도 됨.


2. 반환값이 있는 함수

2.1 반환값(Return Value)이란?

  • 함수 실행 후, 결과를 반환할 수 있음.
  • 반환형(Return Type)이 void가 아닌 경우, return 문을 사용해야 함.
  • 반환값이 필요 없는 경우, void를 사용하여 반환을 생략할 수 있음.

2.2 반환값을 가지는 함수의 기본 구조

반환형 함수이름(매개변수) {
    return 반환값;
}

📌 return 키워드를 사용하여 값을 반환해야 함.
📌 반환형과 반환값의 자료형이 일치해야 함.


2.3 반환값이 있는 함수 예제

아래 예제는 두 정수를 입력받아 합을 반환하는 함수입니다.

#include <stdio.h>

// 함수 선언
int add(int a, int b);

int main() {
    int result = add(10, 20);  // 함수 호출 후 결과 저장
    printf("10 + 20 = %d\n", result);

    printf("5 + 3 = %d\n", add(5, 3));  // 직접 출력

    return 0;
}

// 함수 정의
int add(int a, int b) {
    return a + b;  // 덧셈 결과 반환
}

출력 결과

10 + 20 = 30
5 + 3 = 8

📌 설명

  • return a + b; → a + b 값을 반환.
  • int result = add(10, 20); → 반환된 값을 변수에 저장 후 출력.

2.4 void 반환형 (반환값이 없는 함수)

반환값이 필요 없는 함수는 void를 사용하여 return을 생략할 수 있습니다.

#include <stdio.h>

// 함수 선언
void printMessage();

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

// 함수 정의
void printMessage() {
    printf("반환값이 없는 함수입니다.\n");
}

출력 결과

반환값이 없는 함수입니다.

📌 설명

  • void 함수는 결과를 반환하지 않으므로 return 문이 필요 없음.

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

매개변수와 반환값이 모두 있는 경우,
함수에 값을 전달하고 실행 후 결과를 반환받을 수 있습니다.

#include <stdio.h>

// 함수 선언
double getArea(double radius);

int main() {
    double radius, area;

    printf("원의 반지름을 입력하세요: ");
    scanf("%lf", &radius);

    area = getArea(radius);  // 함수 호출 후 반환값 저장
    printf("원의 넓이: %.2f\n", area);

    return 0;
}

// 함수 정의
double getArea(double radius) {
    return 3.14159 * radius * radius;  // 원의 넓이 계산 후 반환
}

실행 예시

원의 반지름을 입력하세요: 5
원의 넓이: 78.54

📌 설명

  • getArea(radius) → radius 값을 전달받아 원의 넓이를 계산 후 반환.
  • area = getArea(radius); → 반환된 값을 변수에 저장 후 출력.

4. 정리

개념 설명  예제
매개변수 함수에 값을 전달하는 변수 void printName(char name[])
반환값 함수 실행 후 결과를 반환 int add(int a, int b) { return a + b; }
매개변수 O, 반환값 X 함수는 값을 입력받지만 결과를 반환하지 않음 void printMessage(char name[])
매개변수 X, 반환값 O 값 없이 실행하고 결과를 반환 int getNumber() { return 10; }
매개변수 O, 반환값 O 값을 입력받고 결과를 반환 double getArea(double r) { return 3.14 * r * r; }

📌 매개변수를 사용하면 함수로 값을 전달 가능
📌 반환값을 사용하면 함수의 실행 결과를 받을 수 있음
📌 반환값이 필요 없으면 void 사용