函数指针

/*********************************************/
/*作者: 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;

你可能感兴趣的:(函数指针)