||
类型标识符 *函数名(参数表)
int *f(x,y);
例:声明一个指针函数,int *mymain(int x);mymain是一个函数指针。
再来看看平时定义函数:
int main(int x)
{
...;
return x;//
}
小结:(1)main是函数名跟mymain一样是函数指针,但不同点是:mian是函数指针常量,mymain是函数指针变量。
(2)mymain = &main;//将函数main地址赋给mymain(取地址&也可以不要),则(*mymain)(20)就等价于main(20).
(3)(*mymain)(20)等价于mymain(20)。或者看起来更符合习惯。
(4)声明区别:int main(int x);//不能声明为int(*main)(int x);
int (*mymain)(int x);//不能声明为 int mymain(int x);
(二)函数指针:是指向函数的指针变量,即本质是一个指针变量
int (*f) (int x); /* 声明一个函数指针 */
f=func; /* 将func函数的首地址赋给指针f,则func()等价于(*f)() ,也等价于f()*/
(三)两则区别:一个是函数,一个是指针变量。
最简单的辨别方式就是看函数名前面的指针*号有没有被括号()包含,如果被包含就是函数指针,反之则是指针函数。