C언어 초급 - 9장: 함수 (Function) (9.1 함수의 개념과 필요성)

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

9.1 함수의 개념과 필요성

C 언어에서 함수(Function)특정 작업을 수행하는 독립적인 코드 블록입니다.
함수를 사용하면 코드의 재사용성이 높아지고 가독성이 향상되며, 유지보수가 쉬워집니다.
C 언어에서 함수를 사용하려면 함수 선언, 함수 정의, 함수 호출의 개념을 이해해야 합니다.


1. 함수의 개념과 필요성

1.1 함수란?

  • 특정 기능을 수행하는 코드 블록.
  • 필요할 때 호출(call) 하여 실행할 수 있음.
  • 매개변수(parameter) 를 사용하여 데이터를 전달할 수 있음.
  • 실행이 끝나면 결과값을 반환(return) 할 수 있음.

📌 C 프로그램은 기본적으로 main() 함수에서 실행을 시작하며, 다른 함수들을 호출하여 작업을 수행.


1.2 함수의 필요성

함수를 사용하면 다음과 같은 장점이 있습니다.

코드 재사용 가능 → 동일한 기능을 여러 번 사용할 때 중복을 줄일 수 있음
가독성 향상 → 프로그램의 구조를 논리적으로 정리 가능
유지보수 용이 → 기능을 모듈화하여 수정과 개선이 쉬움
디버깅 용이 → 특정 기능별로 분리되어 오류 수정이 쉬움

예제 – 함수 없이 같은 코드 반복하는 경우

#include <stdio.h>

int main() {
    printf("Hello, World!\n");
    printf("Hello, World!\n");
    printf("Hello, World!\n");

    return 0;
}

📌 같은 코드가 여러 번 반복됨 → 비효율적


함수를 사용하여 개선

#include <stdio.h>

// 함수 선언
void printMessage() {
    printf("Hello, World!\n");
}

int main() {
    printMessage();  // 함수 호출
    printMessage();
    printMessage();

    return 0;
}

📌 함수를 사용하면 코드 중복이 줄어들고, 유지보수가 쉬워짐.


2. 함수 선언과 정의

2.1 함수의 기본 구조

C 언어에서 함수를 사용하려면 함수 선언, 함수 정의, 함수 호출의 개념을 이해해야 합니다.

반환형 함수이름(매개변수) {
    // 실행할 코드
    return 값;
}

📌 함수의 구성 요소

  • 반환형(Return Type) → 함수가 반환하는 데이터의 자료형 (int, void, double, char 등)
  • 함수 이름(Function Name) → 함수의 고유한 이름
  • 매개변수(Parameter) → 함수로 전달할 값 (없을 수도 있음)
  • return 문 → 함수가 실행 결과를 반환하는 부분 (void 함수는 return이 없어도 됨)

2.2 함수 선언과 정의

함수를 사용하려면 먼저 선언한 후 정의해야 합니다.

(1) 함수 선언

반환형 함수이름(매개변수);
  • 함수가 존재한다는 것을 컴파일러에 알려줌.
  • 주로 main() 함수 위에 선언.

(2) 함수 정의

반환형 함수이름(매개변수) {
    // 함수 실행 코드
    return 값; // (반환값이 없으면 생략 가능)
}
  • 함수의 실제 동작을 구현하는 부분.

(3) 함수 호출

함수이름(인자);
  • 함수를 실행하려면 main() 함수에서 호출해야 함.

2.3 함수 선언, 정의, 호출 예제

#include <stdio.h>

// 함수 선언
void printHello();

// 메인 함수
int main() {
    printHello();  // 함수 호출
    return 0;
}

// 함수 정의
void printHello() {
    printf("Hello, World!\n");
}

출력 결과

Hello, World!

📌 설명

  • printHello(); → main() 함수에서 호출됨.
  • printHello() 실행 → "Hello, World!" 출력.

3. 함수 호출

3.1 함수 호출이란?

함수를 호출하면, 해당 함수가 실행되고 결과를 반환할 수 있습니다.

📌 함수 호출의 기본 구조

함수이름(인자);

3.2 매개변수가 있는 함수 호출

함수 호출 시 매개변수를 전달하여 원하는 값을 사용할 수 있음.

#include <stdio.h>

// 함수 선언
void greet(char name[]);

int main() {
    greet("Alice");  // 함수 호출
    greet("Bob");

    return 0;
}

// 함수 정의
void greet(char name[]) {
    printf("Hello, %s!\n", name);
}

출력 결과

Hello, Alice!
Hello, Bob!

📌 설명

  • greet("Alice") → name에 "Alice"가 전달됨.
  • "Hello, Alice!" 출력 후, greet("Bob") 실행.

3.3 값을 반환하는 함수 호출

함수가 값을 반환하면, 호출된 곳에서 결과를 저장하거나 출력할 수 있음.

#include <stdio.h>

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

int main() {
    int sum = add(5, 3);  // 함수 호출
    printf("5 + 3 = %d\n", sum);

    return 0;
}

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

출력 결과

5 + 3 = 8

📌 설명

  • add(5, 3) 호출 → a = 5, b = 3 전달됨.
  • return a + b; → 8 반환.
  • sum 변수에 저장 후 출력.

4. 정리

개념  설명  예제
함수 선언 함수가 존재한다고 컴파일러에게 알림 int sum(int a, int b);
함수 정의 함수의 동작을 구현 int sum(int a, int b) { return a + b; }
함수 호출 함수를 실행하는 코드 sum(3, 4);
매개변수 함수에 값을 전달하는 변수 void greet(char name[])
반환형 함수가 반환하는 데이터 타입 int, void, char 등

📌 함수를 사용하면 코드 중복을 줄이고 유지보수가 쉬워짐
📌 함수는 선언 → 정의 → 호출의 순서로 사용됨
📌 반환형이 void인 함수는 값을 반환하지 않음