본문 바로가기

Language/C

[C] 함수 포인터

Function Pointers

포인터는 메모리상의 어떠한 위치를 가리킬 수 있다. 즉, 실행가능한 코드의 시작점도 가리킬 수 있다.

함수를 가리키는 포인터인 함수포인터는 실행가능한 코드의 시작점을 가리킨다. 함수포인터는 배열에 저장되거나 다른 함수의 인자로 쓰일 수도 있다.

함수 포인터 선언

return_type (*func_name)(parameters)

e.g.

#include <stdio.h>
int sum(int a, int b){
    return a+b;
}

int main(){
    int (*funptr)(int, int); //포인터 선언
    funptr = sum; //포인터 할당
    int res = funptr(5, 8);
}

함수 포인터 배열 이용 - 조건문 대신 사용

다음과 같이 주어진 입력에 따라 조건문처럼 함수를 실행시킬 수도 있다.

int main(){
    int (*func[5])(int, int);
    //add, multiply, substract, divide, modulus는 이미 만들어둔 함수
    func[0]=add;
    func[1]=multiply;
    func[2]=substract;
    func[3]=divide;
    func[4]=modulus;

    int input, a, b;
    printf("Select a number 0~4: ");
    scanf("%d", &input);
    printf("Enter two integers: ");
    scanf("%d%d", &a, &b);

    int res = func[input](a,b);
    printf("%d", res);
}

'Language > C' 카테고리의 다른 글

[C] 문자열  (0) 2021.08.21
배열  (0) 2021.07.13