有木有人可以解析一下这两段代码
1. (*(void (*)())0)();
2.void (*signal(int , void(*)(int)))(int);
有木有人可以解析一下这两段代码
1. (*(void (*)())0)();
2.void (*signal(int , void(*)(int)))(int);
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;
}