본문 바로가기

C언어/C언어 문법

[C언어] 함수 포인터 배열

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