함수 포인터에 함수의 시작주소를 다르게 저장하기

CODEDRAGON Development/C, C++

반응형

   

함수 포인터에 함수의 시작주소를 다르게 저장하기

   

   

   

소스코드

   

#include <stdio.h>

void add(int num1, int num2);
void subtract(int num1, int num2);

int main() {
                int x, z;
                char c;
                //
함수 포인터 선언
                void (*pointer)(int, int);

                printf("add
함수의 주소 : %d \n", add);                            // add 함수의 주소
                printf("subtract
함수의 주소 : %d \n", subtract);  // subtract 함수의 주소
                printf("
입력 > ");

                fflush(stdout);
                scanf("%d %c %d", &x, &c, &z);

                if(c=='+')
                        pointer=add;

                else if(c=='-')
                        pointer=subtract;

                else
                        printf("
번째 입력값은 연산자로 '+' 또는 '-' 입력하세요(ex> 7+3).\n");

                pointer(x, z);

                return 0;
}

void add(int num1, int num2) {
                int result;
                result=num1+num2;
                printf("%d + %d = %d\n", num1, num2, result);
}

void subtract(int num1, int num2) {
                int result;
                result=num1-num2;
                printf("%d - %d = %d\n", num1, num2, result);
}


   

   

메모리 구조 및 출력결과

if(c=='+')

        pointer=add;

else if(c=='-')

        pointer=subtract;