函数指针
/*********************************************/
/*作者: Lucky
/*时间: 2007-7-12
/*功能: 测试函数指针的应用
/*********************************************/
#include <stdio.h>
typedef struct TEST
{
//测试指针函数的应用
void (*ptr_v[2]) (void);
void (*ptr_v2) (void);
void *(*ptr_v3) (void);
void (*(*ptr_v4)) (void);
}TEST_PTRV;
void vFunc1(void);
void vFunc2(void);
void vFunc3(void);
void vProvideReturn(void);
void *ReturnFunc(void (*p_Func)(void)); //返回一个函数指针
int main(void)
{
TEST_PTRV PTR;
void (*p_TmepFunc) (void);
puts("void (*ptr_v[2]) (void);");
PTR.ptr_v[0] = vFunc1;
PTR.ptr_v[1] = vFunc2;
(*PTR.ptr_v[0]) ();
(*PTR.ptr_v[1]) ();
puts("void (* *ptr_v3) (void);");
PTR.ptr_v3 = vFunc1;
(*PTR.ptr_v3)();
puts("/nvoid *ReturnFunc(void (*p_Func)(void))");
p_TmepFunc = ReturnFunc(vProvideReturn);
(*p_TmepFunc)();
// PTR.(ptr_v3+1) = vFunc2;
// (*PTR.ptr_v[0]) ();
// (*PTR.ptr_v[1]) ();
// PTR.addr_v = vFunc3;
p_TmepFunc = ReturnFunc(vProvideReturn);
return 0;
}
void vFunc1(void)
{
puts("void vFunc1(void)");
}
void vFunc2(void)
{
puts("void vFunc2(void)");
}
void vFunc3(void)
{
puts("void vFunc3(void)");
}
void vProvideReturn(void)
{
puts("Succeed return Function Pointer!");
}
void *ReturnFunc(void (*p_Func)(void)) //返回一个函数指针
{
void (*p_TmepFunc) (void);
p_TmepFunc = p_Func;
return p_TmepFunc;
}