2016-01-10 110 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)()不同。

相关问题