用函数指针做参数
其实就是定义和使用函数指针的问题。
函数指针的定义:
1. 单独定义:void (*pFun)(int,int);
void 这个函数返回值的类型,pFun 这个指针的名称,(int x,int y) 这个函数的参数列表。
2. 参数中定义:void runFun(..., int (*pFun)(int,int),...)
函数指针的使用:
1. 赋值使用:对应定义1
pFun=somefunction;
(*pFun)();
2. 参数使用:对应定义2
runFun(...,somefunction,...);
3. 定义为类型:
typedef char (*PTRFUN)(int);
PTRFUN pFun;
(*pFun)();
4. 指向类成员函数:
PTRFUN pFun;
pFun=&CA::lcFun;
(ca.*pFun)(2);
说明:
1. 函数指针参数的数量和类型必须与实参一致
2. 函数指针作参数时,函数指针的参数只有类型
列了几个简单的应用:
//形式1:返回类型(*函数名)(参数表)
#include<cstdio>
char (*pFun)(int);
char glFun(int a){printf("just a test,hehe\n"); return 'a';}
void main()
{
pFun = glFun;
(*pFun)(2);
指向类成员函数的指针}
/
/形式2:typedef 返回类型(*新类型)(参数表)
typedef char (*PTRFUN)(int);
PTRFUN pFun;
char glFun(int a){ return;}
void main()
{
pFun = glFun;
(*pFun)(2);
}
//形式三
#include<iostream>
using namespace std;
class CA
{
public:
char lcFun(int a){cout<<"just a test "<<a<<endl; return 'a'; }
};
typedef char (CA::*PTRFUN)(int);
int main()
{
CA ca;
PTRFUN pFun;
pFun=&CA::lcFun;
//ca.lcFun(2);
(ca.*pFun)(2);
return 0;
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论