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

C 언어에서 함수 포인터와 함수 포인터 배열은 중요한 개념이며, 함수를 동적으로 호출하거나 다양한 함수의 집합을 다루는 데 유용하게 활용됩니다. 이번 글에서는 함수 포인터와 함수 포인터 배열에 대해 알아보도록 하겠습니다.

함수 포인터

함수 포인터는 다른 함수를 가리키는 포인터입니다. 함수 포인터를 사용하면 실행 시간에 동적으로 어떤 함수를 호출할 지 결정할 수 있습니다. 함수 포인터는 함수의 반환 형식과 매개변수의 형식을 호환하도록 선언되어야 합니다.

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

int (*ptr)(int, int) = add; // add 함수를 가리키는 포인터 ptr 선언
int result = ptr(3, 4); // ptr을 통해 add 함수 호출

위 예제에서 int (*ptr)(int, int) = add; 는 add 함수를 가리키는 포인터 ptr을 선언하고 있습니다. 그리고 ptr을 통해 add 함수를 호출하여 결과를 받아올 수 있습니다.

함수 포인터 배열

함수 포인터 배열은 여러 함수를 포인터 배열로 관리하는 기법입니다. 예를 들어, 특정 조건에 따라 다양한 함수를 실행해야 하는 경우 함수 포인터 배열을 사용하여 조건에 따라 적절한 함수를 선택하여 호출할 수 있습니다.

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

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

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

int div(int a, int b) {
    return a / b;
}

int main() {
    int (*funcs[])(int, int) = {add, sub, mul, div}; // 함수 포인터 배열 선언

    int result1 = funcs[0](3, 4); // add 함수 호출
    int result2 = funcs[1](3, 4); // sub 함수 호출
    // ...

    return 0;
}

위 예제에서 int (*funcs[])(int, int) = {add, sub, mul, div}; 는 함수 포인터 배열을 선언하고 있으며, 배열의 각 요소로 각각의 함수를 가리키는 포인터가 들어가 있습니다. 이후 배열을 통해 각 함수를 호출할 수 있습니다.

결론

함수 포인터와 함수 포인터 배열은 C 언어에서 동적으로 함수를 호출하거나 다양한 함수를 다루는 데 유용한 기능입니다. 이를 통해 유연하고 효율적으로 프로그램을 작성할 수 있습니다.

참고문헌: GeeksforGeeks - Function Pointer in C, Tutorialspoint - C Function Pointers