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

C 언어에서 함수 포인터는 함수를 가리키는 포인터로, 실행 중에 동적으로 함수를 호출할 수 있는 기능을 제공합니다. 함수 포인터의 배열을 포인터로 다루는 방법을 살펴보겠습니다.

함수 포인터

함수 포인터를 사용하면 런타임 시에 어떤 함수를 호출할 지 결정할 수 있습니다. 함수 포인터를 사용하면 함수를 다른 함수의 매개 변수로 전달하거나, 함수 포인터를 요소로 하는 배열을 생성할 수 있습니다.

예시:

#include <stdio.h>

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

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

위의 코드에서 functionPtrsayHello 함수를 가리키는 함수 포인터입니다. 따라서 functionPtr() 호출은 sayHello() 함수를 호출하는 것과 동일합니다.

함수 포인터 배열의 값을 포인터로 다루기

함수 포인터의 배열을 만들고, 해당 배열을 가리키는 포인터를 사용하여 함수를 호출할 수 있습니다.

예시:

#include <stdio.h>

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

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

int main() {
    void (*funcArr[2])() = {func1, func2};
    void (**funcPtr)(void) = funcArr;

    funcPtr[0]();  // "This is function 1" 출력
    funcPtr[1]();  // "This is function 2" 출력

    return 0;
}

위의 코드에서 funcArr은 두 개의 함수 포인터를 요소로 하는 배열을 나타냅니다. 이 배열을 가리키는 포인터인 funcPtr은 배열의 각 요소를 가리킵니다. 따라서 funcPtr[0]() 호출은 func1() 함수를 호출하고, funcPtr[1]() 호출은 func2() 함수를 호출합니다.

함수 포인터와 함수 포인터 배열의 값을 포인터로 다루는 기능을 사용하면 유연하고 동적인 프로그래밍을 할 수 있습니다.

결론

C 언어에서 함수 포인터와 함수 포인터 배열의 값을 포인터로 다룰 수 있는 강력한 기능을 제공하며, 이를 통해 코드의 유연성을 높일 수 있습니다. 함수 포인터와 배열을 사용하여 프로그램의 구조를 더 동적으로 조작할 수 있습니다.

참고 자료