2016-01-10 111 views
-2

,什麼是void *(* void)(void *)代表什麼?

void*(*void)(void*) 

void*(*voi)(void*) 

以及何時使用它的區別?

+1

我看不出有什麼區別,可以排除錯字(voi) –

+0

難道你沒有錯字:'voi'而不是'void'嗎? – arainone

+5

well'void *(void)(void)'不會編譯,因爲它試圖聲明一個返回名爲void的'void *'的函數,並且不能使用該語言的關鍵字作爲名稱。 – PeterT

回答

4

well void*(void)(void)不能編譯,因爲它試圖聲明一個函數返回一個void *命名爲void,並且不能使用該語言的關鍵字作爲名稱。

你不能聲明一個名爲void的int(int void=5;當然不工作)。

現在voi是一個有效的標識符,你可以命名一個功能voi

試圖找出你實際上要求的區別。

void(*name)(void);void(name)(void);是一個聲明一個函數,另一個聲明一個函數指針。
事實上,第二個例子中的括號沒有做任何事情。 void(name)(void);void name(void);相同。

但是,當聲明函數指針時,需要括號或*將左側綁定到返回類型。

無論如何,我不確定你在問什麼,所以你最好在網站上搜索關於函數指針的其他問題。與this one一樣,這也解釋了爲什麼使用void(name)(void)可能與void(name)()不同。

相關問題