116. 함수 포인터

전문가) 함수 포인터 선언에는 입력 매개 변수 목록과 반환 형식이 필요하지. 학생) 그럼 입력 매개변수 목록과 반환 형식이 같은 함수를 기억할 수 있겠네요.

함수 포인터는 시그니쳐를 원소 형식으로 취급해요.
두 개의 정수 형식을 입력 인자로 받고 반환 형식이 정수인 함수 포인터 변수는 int (*fun)(int ,int); 처럼 선언할 수 있어요.

그리고 fun 포인터 변수에 함수 원형이 같은 함수 이름을 대입할 수 있죠.
함수 포인터 변수는 함수 호출과 같은 방법으로 사용할 수 있어요.
또한 typedef int (*Fun)(int ,int); 처럼 함수 포인터 형식명을 정의하여 Fun fun; 처럼 변수 선언에 사용할 수도 있죠.

예를 들어 두 개의 정수를 입력 인자로 받아 두 수의 합과 차, 곱, 나누기를 하여 결과를 반환하는 함수들이 있다고 가정해요.
그리고 typedef int (*Fun)(int,int); 처럼 함수 포인터 형식명을 정의하기로 해요.
Fun 형식을 원소로 하는 배열을 선언할 수도 있죠.
그리고 각 원소에 두 수를 입력 인자로 받아 사칙 연산을 수행하여 결과를 반환하는 함수명으로 대입할 수 있어요.
그리고 배열의 원소를 함수처럼 사용할 수 있답니다.

typedef int(*Fun)(int,int); //함수 포인터 형식 Fun 정의
…중략…
Fun arr[4] = {Add,Sub,Mul,Div};
…중략…
printf(“%d\n”, arr[i](9,2));
◈ 함수 포인터 변수를 사용하는 예

◈ 실행 결과


[C언어 무료 동영상 강의] 115. 함수 포인터와 콜백 개요, 116. 함수 포인터