C语言如何从源函数中获取指向它的函数指针的地址

rtoax 2020-05-21 05:56:18
假设有多个函数指针,这些函数指针是结构体的成员变量。 这些函数指针指向同一个源函数。 当从函数指针调用改源函数时,如何从源函数中获取该函数指针的地址。 具体描述见附图。 请给出完整思路和代码。
...全文
599 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
千梦一生 2020-06-15
  • 打赏
  • 举报
回复
引用 8 楼 千梦一生 的回复:
迭代器用的太少,不是很懂。

ebp前面也是调用函数那行代码的下一行代码。
然后还要通过指针往上找上一行的call xxxxxx,看看[xxxxxxx]是个啥。

单纯C语言除非传参,否则暂时还没有什么比较好的想法

然后还要通过指针往上找上一行的call [xxxxxx],看看xxxxxxx是个啥。
千梦一生 2020-06-15
  • 打赏
  • 举报
回复
迭代器用的太少,不是很懂。

ebp前面也是调用函数那行代码的下一行代码。
然后还要通过指针往上找上一行的call xxxxxx,看看[xxxxxxx]是个啥。

单纯C语言除非传参,否则暂时还没有什么比较好的想法
rtoax 2020-06-14
  • 打赏
  • 举报
回复
老铁们????
rtoax 2020-05-22
  • 打赏
  • 举报
回复
假如说现在用C语言实现迭代器,begin不能传参,是不是和这个问题差不多。
rtoax 2020-05-22
  • 打赏
  • 举报
回复
引用 1 楼 千梦一生的回复:
好像在ebp前面
我今天想了一下,这个思路确实是个思路
千梦一生 2020-05-22
  • 打赏
  • 举报
回复
因为这种普通的调用,你想返回具体哪个结构体的数据。不同结构体存在不同的位置。
C语言也没有thiscal,帮助你告诉函数【底层创建传入this指针】是在操作哪个结构的数据。
-----------------------------
直观点就是:
你的t1
被存在内存:10001~10002
你的t2
被存在内存:20001~20002

而函数有且仅有一个了。想公用
想要返回 i值。那函数也就纳闷儿了:你是想要10000那块儿的那个i呢,还是20000那块儿的那个i呢?
千梦一生 2020-05-22
  • 打赏
  • 举报
回复
引用 1 楼 千梦一生 的回复:
好像在ebp前面

不对,不是这个。
没办法。不知道咋搞。
除非,这个源函数属于test。则能研究研究使用多态、继承什么的

否则只有直接或者间接地把指针传过去
  • 打赏
  • 举报
回复
似乎做不到,可以在fn_t,中加个参数test*, typedef int(*fn_t)(test*) 或者把他定义成test的成员函数 typedef int(test::*fn_t)()
千梦一生 2020-05-22
  • 打赏
  • 举报
回复
好像在ebp前面

70,022

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧