读书人

搞不懂这样的函数:status = (*pHnd

发布时间: 2012-02-16 21:30:36 作者: rapoo

搞不懂,这样的函数:status = (*pHndl->pFncTable->pRun)(pHndl, pPrm)是怎么一回事?
搞不懂,这样的函数:status = (*pHndl-> pFncTable-> pRun)(pHndl, pPrm)

是如何定义,运用的 ?

哪里有这样类似的例子?

[解决办法]
猜测
pHndl是结构体或者类指针,
pFncTable又是一个结构体或者类指针
pRun函数指针
(pHndl, pPrm)函数的两个参数
[解决办法]
比如:

#include <stdio.h>
#include <stdlib.h>

int fun(struct Handl *pHndl , int n)
{
return n> 0;
}

struct Handl
{
struct FncTable *pFncTable;
/*... other members*/
};


struct FncTable
{
int (*pRun)(struct Handl *, int);
void (*pExit)(void);
/*... other members*/
};
int main()
{
int status, pPrm=2;
struct Handl h1, *pHndl;
struct FncTable ftable;
ftable.pRun=fun;

h1.pFncTable=&ftable;
pHndl=&h1;
status = (*pHndl-> pFncTable-> pRun)(pHndl, pPrm);
printf( "status = %d\n ", status);
system( "pause ");
return 0;
}

读书人网 >C语言

热点推荐