기본 개념 (함수포인터란?)
포인터 == 메모리 주소를 저장한 변수
함수포인터 == 함수의 메모리 주소를 저장한 변수
작동 아이디어 + 원리
Lookup 배열을 사용하면, 조건문을 획기적으로 줄일 수 있다.
이를 이용해, 배열 속에 함수 포인터(주소)를 넣는다면
조건문없이 조건에 맞는 함수를 출력하도록 할 수 있다! ( 개발이 편함 )
#include <stdio.h>
// 테스트를 위한 함수
void PrintFunc01(void){
printf("PrintFunc01\n");
}
void PrintFunc02(void){
printf("PrintFunc02\n");
}
void PrintFunc03(void){
printf("PrintFunc03\n");
}
int main(void) {
// 1. 함수 포인터 배열이 있다. => 그 배열속 원소는, 주소값을 가지고 있다. (포인터니까)
// 2. 그 주소에는, void (*)(void) 타입의 함수가 있다.
// void => return 형식이 void
// (void) => 인자 형식이 void
void (*pFunc[3])(void) = {PrintFunc01, PrintFunc02, PrintFunc03};
// 함수의 주소를 모아둘수 있음 (전화번호부의 역할과 완벽히 일치)
int nSelect;
scanf("%d", &nSelect);
// 조건문없이 선택한 함수를 호출!!!
pFunc[nSelect]();
return 0;
}
반응형