[c언어] 함수 포인터와 함수 포인터의 배열 참조 값을 포인터로

프로그래밍에서 함수 포인터는 C 언어의 강력한 기능 중 하나입니다. 함수 포인터를 사용하면 다른 함수를 가리키고 호출할 수 있습니다. 또한, 함수 포인터의 배열을 사용하여 여러 함수를 참조하는 배열을 만들 수 있습니다.

함수 포인터 사용하기

함수 포인터를 선언할 때는 함수의 반환 형식과 매개변수의 형식을 지정해야 합니다. 예를 들어, int 형식을 반환하고 int 형식의 매개변수를 하나 가지는 함수 포인터를 선언하려면 다음과 같이 작성합니다.

int (*ptr)(int);

위의 코드에서 ptrint 형식을 반환하고 int 형식의 매개변수 하나를 갖는 함수를 가리키는 포인터입니다.

함수 포인터 배열 만들기

다음으로, 여러 함수를 가리키는 함수 포인터의 배열을 만들어 보겠습니다.

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

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

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

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

int main() {
    int (*func_ptr[4])(int, int) = {add, subtract, multiply, divide};
    int result = func_ptr[0](10, 5); // add 함수 호출
    return 0;
}

위의 코드에서 func_ptradd, subtract, multiply, divide 함수를 가리키는 함수 포인터의 배열을 나타냅니다.

함수 포인터 배열의 참조 값을 포인터로 사용하기

함수 포인터 배열을 다룰 때 주의할 점은 배열이 함수 주소를 가지고 있기 때문에 이를 간접적으로 참조해야 한다는 점입니다. 이를 위해 포인터를 사용하여 함수를 호출하거나 참조할 수 있습니다.

int main() {
    int (*func_ptr[4])(int, int) = {add, subtract, multiply, divide};
    int (*ptr)(int, int);
    
    ptr = func_ptr[1]; // subtract 함수를 ptr에 할당
    int result = ptr(10, 5); // subtract 함수 호출
    return 0;
}

위의 예제에서 ptr을 사용하여 함수 포인터의 배열을 간접적으로 참조하여 subtract 함수를 호출하였습니다.

함수 포인터와 함수 포인터의 배열은 복잡한 프로그램을 작성할 때 유용하며, 강력한 기능을 제공합니다. 유연한 함수 호출 및 다양한 동작을 쉽게 구현할 수 있어 많은 경우에 유용하게 사용됩니다.

이처럼 C 언어에서 함수 포인터와 함수 포인터의 배열을 참조하는 값을 포인터로 사용하는 방법을 알아보았습니다.


참고 문헌: