void show(int a)
{
printf("%d \n",a);
}
show의 포인터 를 만들이렇게 됩니다.
void(*show_ptr)(int) = show;
show 함수의 포인터 show_ptr을 선언하는데 리턴타입은void형이고 매개변수는 int형인 포인터 *show_ptr을 선언.
음... 어렵나요? 그럼 이렇게 비교해보죠
void show(int a) --> show함수
void(*show_ptr)(int) --> 포인터 show_ptr
어떻습니까 둘이 많이 닮아있죠? 다 똑같은데 함수에 괄호()와 이름앞에 '*'붙은거 뺴곤 똑같다는것을 알수있습니다.
[ 함수와 함수포인터의 차이 ]
함수 --> 포인터 상수
함수 포인터 --> 포인터 변수
[ 함수포인터 간단한 예제]
#include <stdio.h>
void show(int a)
{
printf("%d \n",a);
}
int main(void)
{
int aa = 10;
void(*show_ptr)(int) = show;
printf("%d %d \n",show,show_ptr);
show(aa);
show_ptr(aa);
return 0;
}
함수의 정체를 알았기 때문에 우린 이제 show() 함수를 이렇게 이렇게 읽어야 될겁니다. show라는 포인터가 가르키를 함수를 호출하면서 인자값으로 상수 10을 전달하라고 말이죠.