爱编程的小赵 2023-12-25 23:34 采纳率: 30.8%
浏览 14
已结题

关于#c语言#的问题:有木有人可以解析一下这两段代码

有木有人可以解析一下这两段代码

1. (*(void (*)())0)();
2.void (*signal(int , void(*)(int)))(int);
  • 写回答

3条回答 默认 最新

  • 柯本 2023-12-26 09:51
    关注

    1、将0地址转化成一个无返回值的函数指针,并调用该函数,相当于汇编的 call 0H
    2、定义一个函数signal,它的返回值是一个 void (*)(int);的函数指针,它有两个参数,分别为int及 void (*)(int)函数指针。
    可以这样使用它:

    #include <stdio.h>
    void test(int x)
    {
      printf("in test x=%d\n", x);
    }
    void (*signal(int x, void (*pt)(int)))(int)
    {
      pt = test;
      printf("in signal x=%d\n",x);
      return pt;
    }
    int main()
    {
      void (*endt)(int);
      endt = signal(1234, test);
      endt(5678);
      return 0;
    }
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 1月3日
  • 已采纳回答 12月26日
  • 创建了问题 12月25日

悬赏问题

  • ¥20 python忆阻器数字识别
  • ¥15 无法输出helloworld
  • ¥15 高通uboot 打印ubi init err 22
  • ¥20 PDF元数据中的XMP媒体管理属性
  • ¥15 R语言中lasso回归报错
  • ¥15 网站突然不能访问了,上午还好好的
  • ¥15 有没有dl可以帮弄”我去图书馆”秒选道具和积分
  • ¥15 semrush,SEO,内嵌网站,api
  • ¥15 Stata:为什么reghdfe后的因变量没有被发现识别啊
  • ¥15 振荡电路,ADS仿真