Notice
Recent Posts
Recent Comments
Link
«   2026/05   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
Tags
more
Archives
Today
Total
관리 메뉴

우리의 IT

C언어 - 함수 본문

정보처리기사

C언어 - 함수

우리의 IT 2025. 3. 27. 07:08

C 언어 - 함수 (Function)

✔️ 함수(Function) → 특정 작업을 수행하는 코드 블록
✔️ 코드의 재사용성 증가, 가독성 향상, 유지보수 용이


🔹 1. 함수의 기본 구조

반환형 함수이름(매개변수) {
    실행할 코드;
    return 반환값;  // (반환형이 void면 생략 가능)
}

📌 예제

#include <stdio.h>

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

int main() {
    int result = add(3, 5);  // 함수 호출
    printf("결과: %d\n", result);
    return 0;
}

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

출력

결과: 8

🔹 2. 함수의 종류

함수 유형 반환값 매개변수

매개변수 X, 반환값 X X X
매개변수 X, 반환값 O O X
매개변수 O, 반환값 X X O
매개변수 O, 반환값 O O O

📌 (1) 매개변수 X, 반환값 X

#include <stdio.h>

void hello() {  // 반환형 void
    printf("Hello, C!\n");
}

int main() {
    hello();  // 함수 호출
    return 0;
}

출력

Hello, C!

📌 (2) 매개변수 X, 반환값 O

#include <stdio.h>

int getNumber() {
    return 42;  // 42 반환
}

int main() {
    int num = getNumber();
    printf("숫자: %d\n", num);
    return 0;
}

출력

숫자: 42

📌 (3) 매개변수 O, 반환값 X

#include <stdio.h>

void printNumber(int n) {  
    printf("입력한 숫자: %d\n", n);
}

int main() {
    printNumber(10);
    return 0;
}

출력

입력한 숫자: 10

📌 (4) 매개변수 O, 반환값 O

#include <stdio.h>

int multiply(int a, int b) {
    return a * b;
}

int main() {
    int result = multiply(4, 5);
    printf("곱셈 결과: %d\n", result);
    return 0;
}

출력

곱셈 결과: 20

🔹 3. 함수와 배열

📌 배열을 매개변수로 전달 (배열은 포인터로 전달됨)

#include <stdio.h>

void printArray(int arr[], int size) {
    for (int i = 0; i < size; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");
}

int main() {
    int numbers[] = {1, 2, 3, 4, 5};
    printArray(numbers, 5);
    return 0;
}

출력

1 2 3 4 5

🔹 4. 함수와 문자열

📌 문자열을 매개변수로 전달

#include <stdio.h>

void printMessage(char str[]) {
    printf("메시지: %s\n", str);
}

int main() {
    char message[] = "Hello, World!";
    printMessage(message);
    return 0;
}

출력

메시지: Hello, World!

🔹 5. 함수와 포인터 (Call by Value vs. Call by Reference)

📌 Call by Value (값에 의한 호출) → 원본 변경 X

#include <stdio.h>

void changeValue(int num) {
    num = 100;
}

int main() {
    int x = 10;
    changeValue(x);
    printf("x: %d\n", x);  // 값 변경 X
    return 0;
}

출력

x: 10

📌 Call by Reference (참조에 의한 호출) → 원본 변경 O

#include <stdio.h>

void changeValue(int *num) {
    *num = 100;  // 포인터를 통해 값 변경
}

int main() {
    int x = 10;
    changeValue(&x);
    printf("x: %d\n", x);  // 값 변경 O
    return 0;
}

출력

x: 100

✔️ *num을 사용하여 포인터가 가리키는 값을 변경


🔹 6. 재귀 함수 (Recursion)

📌 함수가 자기 자신을 호출

#include <stdio.h>

int factorial(int n) {
    if (n == 0) return 1;  // 종료 조건
    return n * factorial(n - 1);
}

int main() {
    printf("5! = %d\n", factorial(5));
    return 0;
}

출력

5! = 120

✔️ 종료 조건이 없으면 무한 루프 발생


🚀 정리

1. 함수의 기본 구조

✔️ 반환형, 함수 이름, 매개변수, 실행 코드, return 문으로 구성

2. 함수의 유형

✔️ 매개변수 X, 반환값 X → void 함수이름()
✔️ 매개변수 X, 반환값 O → int 함수이름()
✔️ 매개변수 O, 반환값 X → void 함수이름(int a)
✔️ 매개변수 O, 반환값 O → int 함수이름(int a, int b)

3. 함수와 배열

✔️ 배열을 함수의 매개변수로 전달 가능
✔️ 배열은 포인터로 전달되므로 원본 값이 변경될 수 있음

4. 함수와 문자열

✔️ 문자열은 문자 배열 (char[]) 형태로 전달됨

5. 함수와 포인터

✔️ Call by Value → 원본 변경 X
✔️ Call by Reference (포인터 사용) → 원본 변경 O

6. 재귀 함수

✔️ 자기 자신을 호출하는 함수
✔️ 종료 조건을 명확히 설정해야 함!

C 언어에서 함수를 잘 활용하면 코드의 유지보수성과 재사용성을 높일 수 있습니다! 🚀