int main()
{
(*(void (*)())0)();
return 0;
}
这串代码想要理解的话并不难,我们接下来一步步解析它
int main()
{
(*(void (*)())0)();
//首先看void(*)()是一个函数指针类型,他是一个无参的返回类型是void
//然后后面是一个0,我们把0看成一个地址,然后看到0前面有括号把
//void(*)()括起来,()是强制类型转换,所以是吧0强制转换成函数指针类型
return 0;
}
所以我们可以把 (void(*)()0) 看成一个整体,我们把它用一个add的函数代替,所以现在就变成了下面这样
int main()
{
(*add)();
return 0;
}
(*add)()函数是函数指针,可以理解为就是函数调用,没有参数,函数名等于调用函数地址。
int main()
{
(*(void (*)())0)();
//可以理解为调用0地址处的函数,函数指针,没有参数,返回类型是void
return 0;
}