함수 고급 이론 — 함수 포인터, 콜백, Lookup 테이블

·
Language/C
함수도 메모리 어딘가에 올라가 있고, 그래서 주소를 가진다. 그 주소를 변수에 담을 수 있다면, 어떤 함수를 호출할지를 실행 중에 바꿀 수 있다. 이 발상에서 함수 포인터, 콜백, 그리고 함수 포인터 배열을 이용한 빠른 분기가 나온다.함수 포인터함수를 부를 때 쓰는 ()는 함수 호출 연산자다. 이 연산자의 피연산자는 괄호 왼쪽에 오며, 반드시 함수형이어야 한다. 그리고 함수 이름은 배열 이름과 마찬가지로 주소 상수다. 배열 이름이 첫 원소의 주소이듯, 함수 이름은 그 함수 코드가 올라간 위치(프로시저 주소)를 가리킨다. 그 주소를 담는 변수가 함수 포인터다. 함수의 이름(상수)을 저장할 수 있는 포인터이고, 그 자체가 함수 호출 연산자의 피연산자가 될 수 있다.#include int GetMax(int ..