[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(3, 4);
    printf("%d\n", result);  // 출력: 7
    
    return 0;
}

위의 예제에서 ptradd 함수를 가리키는 함수 포인터입니다. 이를 사용하여 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) = {add, subtract};
    
    int result1 = ptr[0](5, 3);
    int result2 = ptr[1](5, 3);
    
    printf("%d\n", result1);  // 출력: 8
    printf("%d\n", result2);  // 출력: 2
    
    return 0;
}

위의 예제에서 ptradd 함수와 subtract 함수를 가리키는 함수 포인터 배열입니다. 배열의 각 요소를 통해 해당 함수를 호출할 수 있습니다.

함수 포인터와 함수 포인터 배열은 함수 포인터를 배열에 저장해 놓고 필요할 때 이를 참조하는 데 유용하게 사용될 수 있습니다. 이것은 특히 콜백 함수를 다루거나 유연한 동작을 구현할 때 유용합니다.

이 문서에서는 C 언어에서 함수 포인터와 함수 포인터 배열을 선언하고 사용하는 방법을 살펴보았습니다. 함수 포인터를 사용하면 동적으로 함수를 호출하거나 배열에 저장하여 필요할 때 사용할 수 있습니다.