[c언어] 함수 포인터와 콜백 함수

프로그래밍에서 함수 포인터와 콜백 함수는 매우 유용하며 중요한 개념입니다. 함수 포인터를 사용하면 프로그램이 런타임에 동적으로 함수를 호출할 수 있고, 콜백 함수를 통해 이벤트 핸들링이나 비동기 작업을 처리할 수 있습니다.

함수 포인터

함수 포인터는 함수의 주소를 저장하는 변수입니다. 함수 포인터를 사용하면 프로그램이 런타임에 호출할 함수를 동적으로 선택할 수 있어 유연성이 높아지며, 함수를 매개변수로 전달하는 일부 함수형 프로그래밍 기법에도 활용됩니다.

#include <stdio.h>

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

int main() {
    void (*functionPtr)() = sayHello;
    functionPtr();
    return 0;
}

위의 예제에서 functionPtrsayHello 함수의 주소를 저장하고 있습니다. 그리고 functionPtr를 호출함으로써 sayHello 함수가 실행됩니다.

콜백 함수

콜백 함수는 다른 함수에 의해 호출되는 함수로, 보통 이벤트가 발생했을 때 호출되거나 비동기 작업의 완료를 처리할 때 사용됩니다. 주로 이벤트 핸들링, 정렬 알고리즘, 스레드 및 타이머 기능에서 활용됩니다.

#include <stdio.h>

void performOperation(int x, int y, void (*callback)(int)) {
    int result = x + y;
    callback(result);
}

void displayResult(int result) {
    printf("The result is: %d\n", result);
}

int main() {
    performOperation(5, 3, displayResult);
    return 0;
}

위의 예제에서 performOperation 함수는 callback 매개변수를 통해 콜백 함수를 전달받고, 그 함수를 호출하여 결과를 전달합니다.

함수 포인터와 콜백 함수는 C언어에서 주로 사용되지만, 다른 프로그래밍 언어에서도 유사한 개념이 존재합니다. 이러한 개념을 이해하고 활용하면 프로그램의 유연성과 모듈화가 개선될 수 있습니다.