2014-02-13 70 views
1

是什么声明意味着

int(*compare)(void* argu1, void*argu2); 

是什么意思?我从来没有见过这样的事情,这是我的二叉搜索树章,是它在BST strucutre:

typdef struct{ 
      int counter; 
      int(*compare)(void* argu1, void*argu2); 
      NODE* root; 
      }BST; 
+2

http://stackoverflow.com/questions/840501/how-do-function-pointers-in-c-work 读约函数指针 –

+0

另外,[螺旋规则](HTTP:// C -faq.com/decl/spiral.anderson.html)是解析这种语法的有用策略。 – kbshimmyo

回答

1

这意味着compare是指向具有其void *类型的两个参数的函数,有回报键入int

1
int(*compare)(void* argu1, void*argu2); 

这是一个变量声明。该变量是一个函数指针,它的名字是“compare”。它可以指向任何返回一个int并带两个void指针的函数。

2

这是一个名为compare的变量,它是一个指向函数的指针。该函数返回一个int并接收两个void *参数。

函数指针经常用于提供一种方法来一般性地比较某个其他函数(如排序或排序例程)不理解的类型的两个值;调用者提供了一个函数来代表泛型函数进行比较。

0

该代码声明了一个名为“compare”的变量。这个变量是一个函数指针类型,这意味着你可以为这个变量指定一个函数名称,稍后调用这个函数就像进行常规函数调用一样。为了进一步阅读,您可以参考早期结合与晚期结合。

相关问题