함수 포인터 쓰는 이유?? 가장 쉬운 설명


함수 포인터 쓰는 이유?? 가장 쉬운 설명


이번에는 함수 포인터 쓰는 이유를 알아보겠다.
포인터를 배울때도 이게 왜 포인터가 어떻게 쓰이는지? 왜 쓰이는지 잘 몰랐다.
그 이유에 대해서는 < C언어 포인터 쓰는 이유?? > 여기에서 알아보기로 하고
이 글에서는 함수 포인터 쓰는 이유에 대해서 알아보자.


어느 한 질문이 있었다.

Q. 포인터를 통해 인자를 전달하는 것보다 직접적으로 함수에 전달하는 것이 효율적인거 같은데 함수 포인터는 왜 배우는 건가요?

A. 함수 포인터는 일므을 모르는 함수를 호출할 때 사용합니다. 주로 "프로그램을 제작하는 그 당시에는 존재하지 않는 함수"를 호출할때 이용하죠.

   예를 들면 프로그램에 플로그인 기능이 필요한 경우, 플러그인은 아직 존재하지 않고 나중에 추가 될 수 있기 때문에 프로그램에서는 함수 포인터로 플러그인 함수에 접근합니다.


A. 아래의 코드를 비교해보세요.


< 함수 포인터를 사용하지 않는 경우 >


1
2
3
4
5
6
7
8
9
10
11
12
switch (program_count) {
        case    0:      Zero();         break;
        case    1:      One();          break;
        case    2:      Two();          break;
        case    3:      Three();        break;
        case    4:      Four();         break;
        case    5:      Five();         break;
        case    6:      Six();          break;
        case    7:      Seven();        break;
        case    8:      Eight();        break;
        case    9:      Nine();         break;
}
cs

< 함수 포인터를 사용하는 경우 >

1
2
void (*fp[])() = { Zero, One, Two, Three, Four, Five, Six, Seven, Eight, Nine };
        fp[program_count]();
cs

이렇게 간단하게 사용 할 수 있습니다.

이렇게 함수 포인터 쓰는 이유에 대해서 알아봤다.



댓글

Designed by JB FACTORY