函数指针其实是一个指针指向函数,相当于用一个指针变量来存储函数名的地址,一般形式是void (*p)(int)或者void (*p)(int x)这两种形式是一样的意思,不过习惯上用第一种.
一个新知识最重要的是要知道怎么用,那我就讲一下这个指针函数应该怎么用吧!
void m(int x); //这个地方是申明一个m的函数,也可以这样void m(int x);
void (*p)(int x); //申明一个函数指针
int main()
{m(10);
p=&m; //这里注意
(*p)(20); //这个注意
}
void m(int x)
{printf("%d/n",x);}
刚才说的是其中一种调用形式,下面说一下其他几种形式:
第二种: p=m;
p(20);
第二种 p=&m;
p(20);
第三种 p=m;
(*p)(20);
第四种 (*m)(20);
其实这个时候你就会有点混淆,说m到底是地址还是值?其实m是一个函数指针常量,p是一个函数指针变量,这就是他们的关系.有点像数组名,但是数组名是不加&的.