typedef将函数指针定义为别名p,所以p不是变量名,表示一个函数指针,所以可以。相当于p就是个函数。return错误是因为函数的返回类型是void,但你的函数要求返回int,类型不一致
typedef的功能是定义新的类型。第一句就是定义了一种p的类型,并定义这种类型为指向某种函数的指针,这种函数以一个int为参数,此处应该不是void,而是int类型返回值你这样的程序12行就不会报错了。这是一个例子
#include <stdio.h>
typedef int(*p)(int a);
int pr(int a)
{
p f = pr;
return a;
}
int main(void)
{
p f = pr;
printf("%d",f(6));
return 0;
}