Java教程

如何理解 (*(void(*)())0)()

本文主要是介绍如何理解 (*(void(*)())0)(),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

(*(void(*)())0)()的声明让很多程序员感到害怕,今天来剖析(*(void(*)())0)()组成的规律

首先我们先理解 float *f()和float (*f)()之间的区别

由于()的结合优先级要比*要高,所以f()首先是一个函数,函数的返回值是指向float类型数据的指针。而(*f)首先是一个指针,然后再和(),所以它是一个指向函数的函数指针,函数的本身的返回值是一个float类型的数据。

float (*f)() 是一个指向返回值为float函数的指针,而(float (*)())为一个指向返回值为float函数的指针类型转换符。

对(*(void(*)())0)()进行分解首先对0用(void(*)())强制转化类型,使0是函数指针类型,然后(*(void(*)())0)进行取值。(*(void(*)())0)()则可以运行该函数。

这篇关于如何理解 (*(void(*)())0)()的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!