函数指针的使用

C++中的指针总是这么微妙,C++中的函数作为一个代码段,在程序运行时也会存在内存中,既然是存在内存中的,那么强大的指针也就能够抓住他咯。让一个指针指向不同的函数那么就可以利用这个指针方便地调用不同的函数,实现灵活自如地调用同一类型函数。

函数指针常常作为许多API中的回调接口,总之是很有用的东西。

使用函数指针必须遵守一定的规则:

函数指针必须指向 一个与他具有相同返回值类型和参数表的函数

定义一个函数指针的语法为:

返回值类型 (*指针名)(参数列表);

例如:

int (*pFunction)(int,float,double);//为了说明这是一个函数指针而不是一个整形指针,这里的括号是必须的。至于形参的名称,没有必要存在啦。

那么怎么获取函数的地址让指针指向函数呢?其实函数名就代表这函数的地址,那么我们可以这样做

int add(int a, int b);

int (*pFun)(int,int) =add;

由于函数名就是指向这个函数的指针,所以我们通常这样调用一个函数:

int resoult = add(4,5); 

这里的add就是指向函数的内存地址pFun又是指向add的指针 那么我们自然可以这样做:

int resoult =(*pFun)(3,5);//取出函数指针中的值(就是它指向的函数)来传入参数

甚至,你还可以这样做:

int resoult = oFun(4,9);//可以通过这个指针名直接

 

下面是我写的一个使用例子:

函数指针代码

运行结果:

函数指针运行结果

posted @ 2013-08-14 16:35  Geequlim  阅读(463)  评论(0)    收藏  举报