int (*p)()是一个int类型的无参数的函数指针,它指向的是一个函数,它是用来存放无形参函数代码首地址的变量,也就是说在赋值的时候给p一定要赋一个函数;而int *p(int x,int y)是一个返回值为int型的简单的带有两个形参的指针函数,和普通函数不同的是它是一个指针函数。简单说前者是一个变量,而后者是一个函数!
int (*p)(); //函数指针,这个指针可以指向不同的函数,但是必要条件是参数与返回值都为void型
若定义了一个这样的函数: int fun();
则这样赋值: int (*p)() = fun;
再这样调用: p();
int *p(int x,int y) //指针函数,是个函数参数为两个int变量,它的返回值是一个int的指针
若定义了一个这样的函数: int *p(int x,int y);
则这样赋值: int *ptr = p(4, 5);
前一个是一个函数的指针,也就是P是一个指针,它指向某个返回值为int,无参数的函数;后一个是一个函数名为p的函数,该函数返回值为int *,也就是返回值是整型指针
int (*p)() 是定义一个保存某类函数(int fun())入口地址的指针.
int *p(int x,int y) 是声明一个返回整型指针的函数(p).
胡说,谁说的int *p(int x,int y)是一个返回值为int型的简单的带有两个形参的指针函数?这分明是以个返回类型为整型指针(int*)的一个带有两个整型参数的普通函数。您这么理解int* p(int x,int y)就好理解了。