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

C 언어에서는 함수 포인터와 함수 포인터의 배열을 사용하여 다양한 기능을 구현할 수 있습니다. 함수 포인터는 함수의 주소를 저장하는 변수로, 이를 활용하여 프로그램의 유연성을 높일 수 있습니다. 함수 포인터의 배열은 여러 함수 포인터를 하나의 배열에 저장하여 효율적으로 관리할 수 있습니다.

함수 포인터

함수 포인터를 정의하고 사용하는 방법은 다음과 같습니다.

#include <stdio.h>

void sayHello() {
    printf("Hello!\n");
}

int main() {
    void (*functionPtr)() = sayHello;
    functionPtr();  // "Hello!"를 출력
    return 0;
}

위 예제에서 functionPtrsayHello 함수를 가리키는 함수 포인터입니다. 함수 포인터를 사용하여 함수를 호출할 수 있습니다.

함수 포인터의 배열

함수 포인터의 배열을 정의하고 사용하는 방법은 다음과 같습니다.

#include <stdio.h>

void function1() {
    printf("This is function 1\n");
}

void function2() {
    printf("This is function 2\n");
}

int main() {
    void (*functionPtrArray[2])() = { function1, function2 };
    functionPtrArray[0]();  // "This is function 1"을 출력
    functionPtrArray[1]();  // "This is function 2"을 출력
    return 0;
}

위 예제에서 functionPtrArray는 두 개의 함수 포인터를 저장하는 배열입니다. 배열을 통해 여러 함수를 관리하고 호출할 수 있습니다.

함수 포인터의 배열의 배열

함수 포인터의 배열을 가리키는 포인터를 사용하여 2차원 배열을 구성할 수 있습니다.

#include <stdio.h>

void functionA() {
    printf("This is function A\n");
}

void functionB() {
    printf("This is function B\n");
}

int main() {
    void (*functionPtrA[2])() = { functionA, functionB };
    void (*functionPtrB[2])() = { functionA, functionB };

    void (*(*functionPtrArray[2])[2])() = { &functionPtrA, &functionPtrB };
    (*functionPtrArray[0][1])(); // "This is function B"를 출력
    return 0;
}

위 예제에서 functionPtrArray는 함수 포인터의 배열을 가리키는 포인터인 2차원 배열입니다. 이를 통해 다차원 함수 포인터 배열을 활용할 수 있습니다.

함수 포인터와 함수 포인터의 배열을 사용하면 다양한 상황에서 유연하고 효율적으로 프로그램을 구성할 수 있습니다.