首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

怎么定义一个函数指针?

2012-02-22 
如何定义一个函数指针???例如:.h文件voidkk(void)typedefvoid(*pk)(int).cpp文件voidkk(void){cout

如何定义一个函数指针???
例如:
.h文件
void   kk(void);
typedef   void   (*pk)(int);

.cpp文件
void   kk(void){
cout < < "kk < <endl;
}
......这个函数指针怎么定义啊


[解决办法]
void kk(void);
typedef void (*pk)(void);

参数和返回值要一致


定义和调用:
pk MyFunc = kk;
(*MyFunc)();
[解决办法]
void ( *fp )() = kk;
[解决办法]

typedef void (*pk)(void);

参数和返回值要一致
[解决办法]
pk pFunc;
pFunc = kk;
(*pFunc)(int);
[解决办法]
void kk(void);
typedef void (*pk)(void);
pk MyFunc = kk;
(MyFunc)();
测试通过


[解决办法]
返回类型 (*指针名)(参数。。。)
[解决办法]
#include <stdio.h>
typedef void (*fun_pointer_test)(int);
typedef void (*fun_pointer_foo)(void);

void test(int t)
{
printf( "test\n ");
}

void foo(void)
{
printf( "foo\n ");
}
int main()
{
fun_pointer_test pTest;;
pTest = test; //函数指针 与 指向的函数 其返回值与参数类型 ,参数个数必须相同
(pTest)(2);

fun_pointer_foo pFoo;
pFoo = foo;
(pFoo)();
getchar();
}
[解决办法]
针对你的:

void kk(void)
{
cout < < "kk " < <endl;
}

或其相同原型的函数作如下声明:

typedef void(*FuncKk)(void);//FuncKk是这一原型函数的指针类型;

这样你可以在你的程序中如下:

int main()
{
FuncKk _pfunc = kk;//定义一个FuncKk型的函数指针并初始化;

_pfunc();//用该函数指针调用kk函数

_PAUSE;
return 0;
}

上述程序行为良好,体现出标准的函数指针使用方法,即使用typedef声明函数指针的类型而不是函数指针变量,好处是一处声明,到处都可以使用而避免多次使用函数指针冗长的语法,还有typedef固有的灵活性。

热点排行