理解C语言中的功能指针

时间:2013-10-25 13:48:09

标签: c function-pointers

(*PREDir->cfun) ( d, &tf );在下面的代码中负责什么:

typedef struct {
    FILE    *fp;
    char    queue[ NAMELEN ];
    char    fullpath[ NAMELEN ];
    char    fname[ NAMELEN ];
} TRW;

typedef struct {
    char    *dir_to_scan;
    void    (*cfun)();
} SCANNING;

static TRW  tf;
static SCANNING *PREDir;
char *d;

(*PREDir->cfun) ( d, &tf );

2 个答案:

答案 0 :(得分:2)

PREDir是指向结构的指针。该结构包含一个名为cfun的成员,该成员是一个指向函数的指针,该函数接受未指定数量的参数而不返回任何内容。

(*PREDir->cfun) ( d, &tf );

使用两个参数调用该函数,d和指向tf的指针。

答案 1 :(得分:0)

cfun是一个指向函数的指针,该函数接受任何参数并返回void。

因此,(*PREDir->cfun) ( d, &tf );会使用参数PREDir->cfund(地址为tf)调用当前分配给&tf的函数。

确保PREDir指向已分配SCANNING字段的cfun对象,否则您将获得未定义的行为。