Languages/C

[C] 함수포인터 + Lookup 배열 ( 개꿀 조합 )

MOONCO 2023. 2. 25. 20:18

기본 개념 (함수포인터란?)

포인터 == 메모리 주소를 저장한 변수

함수포인터 == 함수의 메모리 주소를 저장한 변수

 

작동 아이디어 + 원리

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;
}
반응형