Select Git revision
fnpointer.c
fnpointer.c 986 B
#include<stdio.h>
void add(int *a, int *b, int *c)
{ *c = *a + *b;}
void sub(int *a, int *b, int *c)
{ *c = *a - *b;}
void div(int *a, int *b, int *c)
{ *c = (*a) / (*b); }
void mul(int *a, int *b, int *c)
{ *c = (*a) * (*b); }
int main()
{
int a = 100;
int b = 200;
int c = 9999;
char ch;
int op = 0;
scanf("%d %c %d", &a, &ch, &b);
// ch = + :add, -:sub, *:mul, /:div
switch(ch)
{
case '+':
op = 0;
break;
case '-':
op = 1;
break;
case '*':
op = 2;
break;
case '/':
op = 3;
break;
}
void (*fp[4])(int *, int *, int *) = {add, sub, mul, div}; // 함수의 포인터
//int const *p = &a;
//int * const q = &a;
fp[op](&a, &b, &c);
fprintf(stdout, "%d %c %d = %d\n",a, ch, b, c);
fprintf(stdout, "a,b,c:%d %d %d\n", a, b, c);
fp[1](&a,&b,&c);
fprintf(stdout, "a,b,c:%d %d %d\n", a, b, c);
fp[2](&a,&b,&c);
fprintf(stdout, "a,b,c:%d %d %d\n", a, b, c);
fp[3](&a,&b,&c);
fprintf(stdout, "a,b,c:%d %d %d\n", a, b, c);
}