C语言 函数指针

#include <stdio.h>

int add(int a,int b);
int sub(int a,int b);
int fun(int (*ps)(int,int),int a,int b);

int main()
{   
    int (*ps)(int,int);
    int x,y,z;
    scanf("%d %d",&x,&y);
    if(x<y)
    ps=add;
    else
    {
	ps=sub;	
    }
    z=fun(ps,x,y);
    printf("x=%d,y=%d,z=%d\\n",x,y,z);
}
int add(int a,int b)
{ 
	return (a+b);
}
int sub(int a,int b)
{ 
	return (a-b);
}
int fun(int (*pf)(int,int),int a,int b)
{   
    return ((*pf)(a,b));
}