撬杆运动员
2020-05-27 19:35
采纳率: 6.7%
浏览 137

c语言问题请教求大佬解答!

typedef struct
{
    int (*setNumFun)(void *a, int b, int *c);
}strFun;

int setNum(*p)
{
    内容;
}

int main()
{
    strFun *temp;
    temp->setNumFun = setNum;
}

请问temp->setNumFun = setNum;这句的具体含义是什么呢?谢谢

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • threenewbee 2020-05-27 22:55
    已采纳

    其实这么写是错的,因为
    temp->setnumFun = setnum;
    将setnum函数传给函数指针类型setnumFun
    其实这么写是错的,因为
    int (*setnumFun)(void *a, int b, int *c);
    返回值是int,参数是void *, int, int *
    你需要把setnum修改下
    int setnum(void *p, int b, int * c)
    {
    ...
    }
    这样才行。

    问题解决的话,请点下采纳

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • qiu_shaofeng 2020-05-27 23:14

    setNumFun是结构体strFun的成员变量,其类型是函数指针,指向具有void、int、int参数返回值为int的函数。
    这句话的含义是把函数setNum的首地址赋给结构体变量temp的成员变量setNumFun,也就是setNumFun指向函数setNum。
    要注意的是setNum函数要和setNumFun指向的函数具有相同的函数原型。

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题