[c언어] 함수 포인터와 함수 포인터의 배열을 사용한 함수 호출

C언어에서 함수 포인터와 함수 포인터의 배열을 사용하여 함수를 호출하는 방법을 알아보겠습니다.

함수 포인터

함수 포인터는 함수의 메모리 주소를 저장하는 포인터입니다. 이를 사용하면 함수를 가리키는 포인터를 통해 함수를 호출할 수 있습니다.

다음은 함수 포인터를 선언하는 방법입니다.

int (*funcPtr)(int, int);  // funcPtr이라는 이름의 int를 반환하는 두 개의 int 인자를 받는 함수 포인터

위의 예시에서 (*funcPtr)은 함수 포인터를 가리키고, (int, int)는 함수의 매개변수를 나타냅니다.

함수 포인터의 배열

함수 포인터의 배열은 다수의 함수 포인터를 하나의 배열에 저장하는 것을 말합니다. 이를 통해 동일한 시그니처(signature)를 가진 다수의 함수에 대해 편리하게 접근할 수 있습니다.

다음은 함수 포인터의 배열을 선언하는 방법입니다.

int (*funcArr[5])(int, int);  // 함수 포인터를 다수 저장하는 funcArr 배열

위의 예시에서 funcArr이라는 배열은 함수 포인터를 저장하며, 각 함수 포인터는 int를 반환하고 두 개의 int 매개변수를 받습니다.

함수 포인터와 함수 호출

다음은 함수 포인터를 사용하여 함수를 호출하는 방법입니다.

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

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

int main() {
    int result;
    int (*funcPtr)(int, int);
    funcPtr = add;
    result = funcPtr(10, 5);  // add 함수 호출
    printf("Result: %d\n", result);

    funcPtr = subtract;
    result = funcPtr(10, 5);  // subtract 함수 호출
    printf("Result: %d\n", result);
	
    return 0;
}

위의 예시에서 funcPtr을 통해 addsubtract 함수를 차례로 호출하고 있습니다.

함수 포인터와 함수 포인터의 배열을 사용하면 프로그램의 유연성을 높일 수 있으며, 구체적인 함수 호출을 런타임에 동적으로 결정할 수 있습니다.

이상으로 함수 포인터와 함수 포인터의 배열을 사용한 함수 호출에 대해 알아보았습니다.