这道题源自于《C语言陷阱与缺陷》一书中的一道题,咋一看有点东西,其实一层层刨析来看没那么夸张,一步步展开就行:
(*(void(*)())1)()
比较官方的题解:
1.将1强制类型转换成void(*)()这种类型的函数指针
2.1现在是一个函数的地址,这个函数没有参数,返回类型是void
3.然后去调用1地址处的函数
我自己的理解:
1本来是int【整数】类型的,现在强制转换为void(*)()【函数指针类型(且是无参函数指针类型)】,【例:int add(){},int (*pa)()=&arr】,*(void(*)())1将函数指针1解引用即:将函数指针又变为了函数,又因为之前强制类型转换1时是无参函数的类型,所以后面+()就行,
即:(*(void(*)())1)()。