Programming/C
[Programming/C] 함수 포인터(Function Pointer)
scii
2020. 6. 16. 02:37
함수 포인터(Function Pointer)란 특정 함수를 구성하는 시작 명령의 위치를 가리키는 포인터이다. 함수 포인터를 사용하면 해당하는 함수를 호출하여 실행할 수 있다.
데이터를 가리키는 포인터가 자신이 가리킬 대상의 크기를 명시하듯 함수 포인터는 함수 원형(Function Prototype)을 사용하여 포인터를 선언한다.
더보기
함수 포인터가 함수 원형을 사용하는 이유는 함수 원형을 알아야 함수를 호출할 때 스택 프레임을 구성할 수 있기 때문이다.
* 스택 프레임: 스택을 함수 단위로 구역을 나눠 사용할 수 있도록 C언어에서 제공하는 스택 관리 방식.
원형이 같은 함수들 묶기
함수 포인터를 사용하는 가장 큰 이유는 같은 형식의 함수를 그룹으로 묶을 수 있기 때문이다.
#pragma warning(disable: 4996)
typedef int (*FUNC[4])(int, int);
#include <stdio.h>
int Sum(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 Div(int a, int b) {
return a / b;
}
int main(void) {
FUNC func = { &Sum, &Sub, &Mul, &Div };
char op_table[4] = { '+', '-', '*', '/' };
for (int i = 0; i < 4; i++) {
printf("%d %c %d = %d\n", 8, op_table[i], 4, (*func[i])(8, 4));
}
return 0;
}
// 결과
/*
8 + 4 = 12
8 - 4 = 4
8 * 4 = 32
8 / 4 = 2
*/