본문 바로가기
c언어 입문

[C언어 기초] 함수(function) 쉽게 배우기 – 코드 재사용의 시작

by 두뇌향상중 2025. 8. 11.
반응형

🧩 C언어 함수(function) 쉽게 배우기 – 코드 재사용의 시작

프로그램이 길어질수록 같은 코드를 반복 사용하는 일이 많아집니다.
이럴 때 함수(function)로 코드를 묶어두면 재사용, 가독성, 유지보수 모두 좋아집니다.


✅ 1. 함수란?

특정 작업을 수행하는 코드 블록. 입력(매개변수)을 받아 출력(반환값)을 돌려줄 수 있습니다.

반환형 함수이름(매개변수목록) {
    // 실행 코드
    return 반환값; // 반환형이 void가 아니면 필수
}

✅ 2. 함수 선언과 정의

선언(프로토타입)은 컴파일러에게 함수 정보를 미리 알려주는 것, 정의는 실제 구현입니다.

#include <stdio.h>

/* 선언(프로토타입) */
int add(int a, int b);

/* 정의 */
int add(int a, int b) {
    return a + b;
}

int main() {
    int s = add(3, 5);
    printf("sum = %d\n", s);
    return 0;
}

 


✅ 3. 매개변수 & 반환값

  • 매개변수: 함수가 받는 입력값의 이름과 자료형을 지정합니다.
  • 반환값: 함수가 돌려주는 값. 반환형이 voidreturn; 생략 가능합니다(또는 값 없이 사용).
float avg(int total, int n) {
    return total / (float)n;
}

void print_line(int n) {
    for (int i = 0; i < n; i++) printf("-");
    printf("\n");
}

✅ 4. 자주 쓰는 패턴 예제

① 두 수 중 큰 값 반환

int max2(int x, int y) {
    if (x > y) return x;
    else return y;
}

② 입력받아 합/평균 계산

#include <stdio.h>

int sum2(int a, int b) { return a + b; }
float avg2(int a, int b) { return (a + b) / 2.0f; }

int main() {
    int a, b;
    printf("두 정수 입력: ");
    scanf("%d %d", &a, &b);
    printf("합 = %d\n", sum2(a, b));
    printf("평균 = %.2f\n", avg2(a, b));
    return 0;
}

❗ 5. 자주 하는 실수

  • 반환형return 타입 불일치 → 경고/오류 발생
  • 프로토타입 없이 아래쪽에 정의만 해두고 위에서 호출 → 선언 누락 시 암시적 선언 문제(현대 컴파일러에서 오류)
  • 매개변수 개수/타입 불일치 호출 → UB(정의되지 않은 동작) 위험

📝 6. 실습 문제

  1. int min2(int x, int y) 더 작은 값을 반환하는 함수를 작성해보세요.
  2. int abs_int(int x) 음수면 양수로 바꿔 반환하는 함수를 작성해보세요.
  3. 사용자로부터 정수 3개를 입력받아 max2, min2를 조합해 최댓값/최솟값 출력 프로그램을 작성해보세요.

📌 다음 강의 예고

다음 글에서는 포인터(pointer) 기초 다루겠습니다. 함수와 포인터의 관계(주소 전달), call-by-value 한계 보완 방법 정리해보겠습니다.

👉 다음 글: C언어 포인터 기초 – 주소와 참조 이해

👈 이전 글: C언어 배열 기초 – 여러 값을 저장하는 방법


이 글이 도움이 되었으면 댓글과 공감 부탁드립니다!
더 많은 글은 👉 Coding Life 100 Hacks 에서 확인하세요 😊

반응형

댓글