Skip to content
Snippets Groups Projects
Select Git revision
  • b70f02722e9a78a07ff178dc9831a4614a83bff1
  • main default protected
2 results

fnpointer.c

Blame
  • 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);
    
    }