[c언어] 함수 포인터와 함수 포인터의 배열의 활용 예시

함수 포인터와 함수 포인터의 배열은 C언어에서 매우 강력하고 유용한 기능입니다. 이들을 활용하여 코드를 더 효율적이고 유연하게 작성할 수 있습니다. 이번에는 함수 포인터와 함수 포인터의 배열을 사용한 간단한 예시를 살펴보겠습니다.

함수 포인터

함수 포인터는 함수의 주소를 저장하는 포인터입니다. 함수 포인터를 사용하면 런타임에 동적으로 함수를 호출할 수 있습니다. 아래는 함수 포인터를 선언하고 사용하는 간단한 예제입니다.

#include <stdio.h>

// 덧셈 함수
int add(int a, int b) {
    return a + b;
}

// 곱셈 함수
int multiply(int a, int b) {
    return a * b;
}

int main() {
    int (*operation)(int, int);  // 함수 포인터 선얶
    int result;

    operation = &add;  // 덧셈 함수의 주소를 함수 포인터에 할당
    result = operation(2, 3);  // 함수 포인터를 사용하여 덧셈 함수 호출
    printf("덧셈 결과: %d\n", result);

    operation = &multiply;  // 곱셈 함수의 주소를 함수 포인터에 할당
    result = operation(2, 3);  // 함수 포인터를 사용하여 곱셈 함수 호출
    printf("곱셈 결과: %d\n", result);

    return 0;
}

위의 예제에서, 함수 포인터 operation을 사용하여 add 함수와 multiply 함수를 번갈아가며 호출하고 있습니다.

함수 포인터의 배열

함수 포인터의 배열은 함수 포인터들을 요소로 하는 배열입니다. 이를 통해 함수들을 동적으로 선택하여 호출할 수 있습니다. 아래는 함수 포인터의 배열을 사용하여 다양한 연산을 수행하는 예제입니다.

#include <stdio.h>

// 덧셈 함수
int add(int a, int b) {
    return a + b;
}

// 뺄셈 함수
int subtract(int a, int b) {
    return a - b;
}

// 함수 포인터의 배열을 사용하여 연산 선택
int main() {
    int (*operation[2])(int, int) = {&add, &subtract};  // 함수 포인터의 배열 선언 및 초기화
    int result;

    for (int i = 0; i < 2; i++) {
        result = operation[i](5, 3);  // 함수 포인터의 배열을 사용하여 각각의 연산 호출
        if (i == 0) {
            printf("덧셈 결과: %d\n", result);
        } else {
            printf("뺄셈 결과: %d\n", result);
        }
    }

    return 0;
}

위의 예제에서, 함수 포인터의 배열 operation을 사용하여 add 함수와 subtract 함수를 번갈아가며 호출하고 있습니다.

함수 포인터와 함수 포인터의 배열은 C언어에서 다양한 상황에서 유용하게 활용될 수 있습니다. 이를 통해 함수들을 동적으로 선택하여 호출하거나 함수 포인터들을 배열로 관리할 수 있습니다.

이를 통해 코드의 재사용성과 유연성을 높일 수 있으며, 프로그램의 확장성과 유지보수성을 개선할 수 있습니다.

참고자료: GeeksforGeeks - Function Pointer in C

이상으로 C언어에서 함수 포인터와 함수 포인터의 배열을 활용한 간단한 예시를 살펴보았습니다.