함수포인터의 이해
1. 기본형
#include <stdio.h>
int add(int a, int b){ return a+b; }
int sub(int a, int b){ return a-b; }
int mul(int a, int b){ return a*b; }
int (*pa[3])() = {add, sub, mul};
int compute(int op, int a, int b)
{
return pa[op](a, b);
}
void main(void)
{
printf("%d\n", compute(0,3,4));
printf("%d\n", compute(1,3,4));
printf("%d\n", compute(2,3,4));
}
2. 확장형
#include <stdio.h>
int add(int a, int b){ return a+b; }
int sub(int a, int b){ return a-b; }
int mul(int a, int b){ return a*b; }
int sqr(int a){ return a*a; }
int (*pa[4])( ) = {add, sub, mul, sqr};
int (*compute(int op))()
{
return pa[op];
}
void main(void)
{
printf("%d\n", compute(0)(3,4));
printf("%d\n", compute(1)(3,4));
printf("%d\n", compute(2)(3,4));
printf("%d\n", compute(3)(3));
}