Function Pointers
포인터는 메모리상의 어떠한 위치를 가리킬 수 있다. 즉, 실행가능한 코드의 시작점도 가리킬 수 있다.
함수를 가리키는 포인터인 함수포인터는 실행가능한 코드의 시작점을 가리킨다. 함수포인터는 배열에 저장되거나 다른 함수의 인자로 쓰일 수도 있다.
함수 포인터 선언
return_type (*func_name)(parameters)
e.g.
#include <stdio.h>
int sum(int a, int b){
return a+b;
}
int main(){
int (*funptr)(int, int); //포인터 선언
funptr = sum; //포인터 할당
int res = funptr(5, 8);
}
함수 포인터 배열 이용 - 조건문 대신 사용
다음과 같이 주어진 입력에 따라 조건문처럼 함수를 실행시킬 수도 있다.
int main(){
int (*func[5])(int, int);
//add, multiply, substract, divide, modulus는 이미 만들어둔 함수
func[0]=add;
func[1]=multiply;
func[2]=substract;
func[3]=divide;
func[4]=modulus;
int input, a, b;
printf("Select a number 0~4: ");
scanf("%d", &input);
printf("Enter two integers: ");
scanf("%d%d", &a, &b);
int res = func[input](a,b);
printf("%d", res);
}