指针函数,编译没错误但是编译后按回车没有结果,求解答

#include <stdio.h>

void main()
{
int max(int x, int y);
int (*p)();
int a, b, c;
p = max;
scanf("%d%d", &a, &b);
c = (*p)(a,b);
printf("a=%d b=%d max=%d", a, b, c);
}
int max(int x, int y)
{
int max;
max = x;
while(x < y)
{
max = y;
}
return max;
}

函数声明得放到函数外去啊