[c언어] 함수 포인터와 함수 포인터의 배열의 포인터

C 프로그래밍에서 함수 포인터와 함수 포인터의 배열을 사용하여 프로그램의 유연성을 높일 수 있습니다. 이러한 개념은 함수를 매개변수로 전달하거나 함수를 리턴하는 고급 기능을 구현하는 데 사용됩니다.

함수 포인터

함수 포인터는 함수를 가리키는 포인터입니다. 이를 사용하면 프로그램을 실행하는 동안 원하는 함수를 호출할 수 있습니다. 함수 포인터를 사용하면 코드의 유연성과 재사용성을 향상시킬 수 있습니다. 다음은 함수 포인터의 선언 및 사용 예제입니다.

#include <stdio.h>

int add(int a, int b) {
    return a + b;
}

int main() {
    int (*ptr)(int, int);
    ptr = add;
    int result = ptr(10, 20);
    printf("Result: %d\n", result);
    return 0;
}

위의 예제에서 “int (*ptr)(int, int);”은 “int” 형을 반환하고 “int” 타입의 매개변수를 두 개 갖는 함수를 가리키는 포인터를 선언합니다. “ptr = add;” 는 함수 “add”를 가리키도록 합니다. “int result = ptr(10, 20);”은 함수 포인터를 사용하여 “add” 함수를 호출하고 그 결과를 반환합니다.

함수 포인터의 배열과 포인터

함수 포인터의 배열은 함수 포인터들의 배열을 가리키는 포인터입니다. 이를 사용하면 여러 함수 중 하나를 선택하여 호출할 수 있습니다. 다음은 함수 포인터의 배열과 포인터를 사용한 예제입니다.

#include <stdio.h>

int add(int a, int b) {
    return a + b;
}

int subtract(int a, int b) {
    return a - b;
}

int main() {
    int (*ptr[2])(int, int);
    ptr[0] = add;
    ptr[1] = subtract;
    int result1 = ptr[0](10, 20);
    int result2 = ptr[1](10, 20);
    printf("Result1: %d\n", result1);
    printf("Result2: %d\n", result2);
    return 0;
}

위의 예제에서 “int (*ptr[2])(int, int);”은 함수 포인터의 배열을 가리키는 포인터를 선언합니다. “ptr[0] = add;”과 “ptr[1] = subtract;”에서는 함수 포인터 배열에 함수를 할당합니다. 그 후 “ptr0;”과 “ptr1;”을 통해 함수를 호출합니다.

함수 포인터와 함수 포인터의 배열의 포인터는 C 프로그래밍에서 고급 기능을 구현할 때 유용하게 사용될 수 있습니다. 이를 통해 유연하고 재사용 가능한 코드를 작성할 수 있으며, 함수를 포함한 다양한 기능을 효과적으로 구현할 수 있습니다.

참고 자료