함수 포인터는 먼저 함수의 반환값 자료형을 지정해주고, 함수 포인터 이름 앞에 * (애스터리스크)를 붙인 뒤 ( ) (괄호)로 묶어줍니다. 그리고 다시 괄호를 붙여 함수라는 것을 알려줍니다.
void hello_world(void)
{
printf("hello wrold");
}
int main()
{
void (*function_pointer)();
function_pointer = hello_world();
function_pointer();
}
위와 같이 함수포인터를 사용하지만 이런 방식은 Full pointer type이라고 하며, 사용하기에 번거러운 점이 많아 typedef로 많이 사용합니다.
typedef int (*calculator_t) (int x, int y);
int add (int x, int y)
{
return (x + y);
}
int main()
{
calculator_t calculator;
calculator = add;
calculator(10, 20);
}
이렇게 함수 포인터를 typedef로 정의해서 사용하면 가식성이 높고 사용하기 편한 함수 포인터를 사용할 수 있다.