4
gcc
似乎在告訴我int foo(int (*f)(void))
相同int foo(int (f)(void))
f
是一個指針,以無參數返回int
的功能。爲什麼我們可以在這裏省略*
。我也試過int (*p)(void)
和int (p)(void)
。第一個p
是一個函數指針,而第二個是函數。所以*函數指針可以省略?
那麼,發生了什麼?在什麼情況下可以省略星號? 我在K & R中查找並沒有發現任何東西。
謝謝。我也知道在調用指向函數時,(* f)()和f()是一樣的。 – TheoYou
@TheoYou:是的,由於有關函數類型表達式的隱式轉換的單獨規則。即使在常規函數調用'func(arg)'中,表達式'func'也會隱式轉換爲一個指針,這是'()'函數調用「operator」所需要的。在數組中,類似的事情發生在參數聲明和表達式中。 –
@凱瑟湯普森謝謝。這種隱式轉換解釋了許多特殊情況。 – TheoYou