728x90
반응형
함수 포인터 배열
함수 포인터를 응용하여 함수를 배열에 넣어서 사용할 수 있다.
함수 포인터 배열은 함수 포인터를 선언할 때 함수 포인터 이름 뒤에 괄호와 배열의 크기를 넣어서 선언한다.
아래 코드처럼
int (*fptr[3])(int, int) = {FuncA, FuncB, FuncC};
함수 포인터를 함수의 매개변수로 사용
함수 포인터를 함수의 매개변수로 사용할 수도 있다.
#include <stdio.h>
#pragma warning(disable:4996)
double add(int a, int b) {
return (double)a + b;
}
double sub(int a, int b) {
return (double)a - b;
}
double mul(int a, int b) {
return (double)a * b;
}
double div(int a, int b) {
return (double)a / b;
}
void calc(double (*fp)(int, int))
{
int a, b;
printf("피연산자 입력 : ");
scanf("%d %d", &a, &b);
printf("계산 결과 : %lf", fp(a, b));
}
int main()
{
int num;
double (*fptr[4])(int, int) = {add, sub, mul, div};
printf("덧셈 : 1번, 뺄셈 : 2번, 곱셈 : 3번, 나눗셈 : 4번\n");
scanf("%d", &num);
calc(fptr[num-1]);
return 0;
}
위 코드에서 calc 함수는 double형 함수포인터를 매개변수로 갖는다.
따라서 fptr[num-1]을 인자로 전달하여 calc 함수 안에서 피연산자를 입력받고 계산 결과를 출력하게 된다.
728x90
반응형
'C언어 > C언어 문법' 카테고리의 다른 글
[C언어] 포인터 반환 함수 (0) | 2024.02.17 |
---|---|
[C언어] Call By Reference (0) | 2024.02.16 |
[C언어] 함수 포인터 (0) | 2024.02.14 |
[C언어] 리터럴 상수 (Literal Constant) (0) | 2024.02.13 |
[C언어] 문자열 배열 (0) | 2024.02.13 |