函数指针的相关用法

原创 2004年06月30日 13:45:00

定义一个指向函数的指针,例如:

int cuckoo(int baby);

则可以这样来定义一个指向该函数的指针:

int (*pCuckoo)(int);

如果想定义所有函数指针的类型(可以方便的声明多个变量),则可以这样来做:

typedef int(*)(int)   FunPointerType;

利用该类型声明一个函数指针如下:

FunPointerType   pCuckoo;

FunPointerType   pShrimp;

好了,既然我们有了函数指针,那么怎么样来对其进行初始化呢?

It's a piece of cake!

pCuckoo   = &cuckoo;

pShrimp    = &cuckoo;

ok, 怎么使用他们呢?废话少说,很简单:

pCuckoo(3);

or (*pCuckoo)(3);

就这么简单了!

不过在实际使用过程中,有些函数的参数就是一个函数指针,例如:

void Test(int(*f)(int));

那么怎么调用Test呢?更简单了:

Test(pCuckoo);

呵呵,是不是大功告成?

别急,有时候我们会碰到这样一个问题,如果想把一个类中的成员函数当作参数传给Test,也可以这样子做吗?

呵呵,你试一下:

Class A

{

A()

{

   Test(try);

};

~A();

int try(int nTimes);

}

哼哼,编译器会毫不留情地告诉你,有问题了!

为什么会这个样子呢?答案也比较简单:所有成员函数的参数列表中都隐藏了一个this指针(记起来了吧?),这样的话,try成员函数的参数列表当然与Test函数所需要的不同了,编译器不报错就怪了!

怎么办?还是比较简单:

解决方案就是将这个成员函数改成static,这样就ok了!

好了,还有什么我没有说清楚的吗?请发email至alittleshrimp@gmail.com 欢迎骚扰!:)

C/C++函数指针用法总结

C++函数指针 一函数指针介绍   函数指针指向某种特定类型,函数的类型由其参数及返回类型共同决定,与函数名无关。举例如下: int add(int nLeft,int nRight);//...
  • u013507368
  • u013507368
  • 2014年12月02日 16:48
  • 706

C语言—理解函数指针以及它的用法

什么是函数指针? 指针前面已经写过好多,自以为认识的差不多了,但是今天突然看到一个问题,写一个函数指 针,函数指针就是一个指向函数首地址的指针,接下来写几个指针: 写一个函数指针 写一个函...
  • Dawn_sf
  • Dawn_sf
  • 2017年02月13日 16:59
  • 4479

C++中仿函数/函数对象,函数指针的用法

研究这个起因是这样的,就是今天在用priority_queue的时候,需要自定义比较函数,但是此时又不能修改需要比较的类的内容(即不能用重载...
  • haolexiao
  • haolexiao
  • 2016年12月06日 21:44
  • 680

初论自定义类型函数指针(返回函数指针函数的定义)

          写这个文章嘛,源于这两天看到CSDN一个比较有趣的话题:有人提问,函数指针可以作为返回值,该如何定义呢?         其实,我一开始,觉得这个问题有点怪,因为对指针操作的东西,...
  • dicky3651
  • dicky3651
  • 2010年03月23日 19:14
  • 960

VB真是想不到系列之三:VB指针葵花宝典之函数指针

《VB真是想不到系列》    每次看大师的东西到了精彩之处,我就会拍案叫绝:"哇噻,真是想不到!"。在经过很多次这种感慨之后,我发现只要我们动了脑筋,我们自己也能有让别人想不到的东西。于是想到要把这些...
  • AdamBear
  • AdamBear
  • 2002年03月15日 09:00
  • 5057

小记C++函数指针的用法

今天跟Qt小盆友过六一儿童节时,发现她身上有句代码是这么写的:        学过Qt的应该知道这句代码的作用。没学过的也没关系,这个函数要求传入的参数是这样的: QObject:...
  • lgcacddn
  • lgcacddn
  • 2014年06月01日 19:10
  • 986

python函数函数指针用法

函数指针,主要用于向函数中传递一个函数名用该函数名(即函数指针)可以进行动态策略执行。 下面是一个python版本的函数指针用法 def minus(a, b): return a - ...
  • qingyuanluofeng
  • qingyuanluofeng
  • 2015年10月21日 09:49
  • 4444

成员变量/函数指针的用法

标准C++并没有真正的面向对象的函数指针。这是很遗憾的,因为面向对象的函数指针(有时也称为委 托)已经在其他语言中被证明了它的价值。在Delphi(面向对象的Pascal语言)中,面向对象的函数指针是...
  • zyobi
  • zyobi
  • 2006年09月06日 22:13
  • 1555

“指针函数”与“函数指针” typedef 定义函数指针

一、 在学习arm过程中发现这“指针函数”与“函数指针”容易搞错,所以今天,我自己想一次把它搞清楚,找了一些资料,首先它们之间的定义: 1、指针函数是指带指针的函数,即本质是一个函数。函数返回类型...
  • lishenglong666
  • lishenglong666
  • 2011年12月19日 14:41
  • 1186

C++如何声明类成员函数指针或类成员变量指针(A::*)

例如有如下类,class A { int mem; int* func(void) { //... } };怎么声明类A的成员函数指针或成员变量指针呢?...
  • yockie
  • yockie
  • 2016年06月30日 01:23
  • 2386
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:函数指针的相关用法
举报原因:
原因补充:

(最多只允许输入30个字)