[c언어] 함수 포인터의 장단점
함수 포인터는 C언어에서 강력한 기능을 제공하는데, 이에 따라 장점과 단점이 따라옵니다.
장점
동적 함수 호출
함수 포인터를 사용하면 런타임에 어떤 함수를 호출할 지 결정할 수 있습니다. 이는 유연한 프로그래밍을 가능하게 합니다.
void sayHello() {
printf("Hello, world!");
}
void sayGoodbye() {
printf("Goodbye, world!");
}
int main() {
void (*functionPtr)() = sayHello;
functionPtr(); // "Hello, world!" 출력
functionPtr = sayGoodbye;
functionPtr(); // "Goodbye, world!" 출력
return 0;
}
콜백 함수
함수 포인터는 이벤트 처리나 비동기 작업과 같이 콜백 함수를 등록하는 데 사용됩니다.
typedef void (*Callback)(int);
void performAction(int data, Callback callback) {
// 작업 수행
callback(result);
}
void onCallback(int result) {
printf("Callback result: %d", result);
}
int main() {
performAction(10, onCallback);
return 0;
}
단점
복잡성
함수 포인터를 오용하면 코드의 가독성과 유지보수성이 떨어질 수 있습니다. 그러므로 적절하게 사용해야 합니다.
결론
함수 포인터는 C언어에서 강력하고 유연한 프로그래밍을 가능하게 합니다. 그러나 과용하면 코드의 이해와 유지보수가 어려워질 수 있으므로 신중하게 결정해야 합니다.
참고 문헌:
- “C 함수 포인터”, https://www.tutorialspoint.com/cprogramming/c_function_pointers.htm
- “Why and how are function pointers used in C on a daily basis?”, https://stackoverflow.com/questions/162941/why-and-how-are-function-pointers-used-in-c-on-a-daily-basis