今天我收到了一份关于function pointer(binary tree)
的作业。
有一大堆我无法理解的代码...我理解function pointer
是什么以及它是如何工作的但是2 function pointers
(1是parameter
)
header.h
typedef struct _node_ {
int key;
struct _node_ *left;
struct _node_ *right;
} node;
typedef struct _bstree_ {
node *root_node;
int (*compare_keys)(int x, int y); //this code
} bstree;
c file
void bst_init_with_comp_operator(bstree *bst, int(*comp)(int x, int y)) {
bst_init(bst);
bst->compare_keys = comp; // what does this mean? a fucntion pointer parameter to function pointer to struct?
}
// comp应该返回-1,如果x应该被视为小于y,如果x应该在此处输入代码,则为0被视为等于y,或者如果x应被视为大于y,则返回1。 / p>
所以我创建了这个函数:
int compare (int x , int y)
{
if(x < y) return -1;
else if(x == y) return 0;
else return 1;
}
的main.c
bstree tree;
bst_init_with_comp_operator(&tree,compare(2,3))
但它不起作用......
通常我们只需要这样的东西
int function(int x, int y)
{ return x+y;}
int (*pointerf) (int , int)
pointerf = function;
pointerf(2,3)
答案 0 :(得分:0)
您只需要<canvas id="myCanvas" width="500", height="500"></canvas>
,这会将函数地址作为参数传递,而如果执行bst_init_with_comp_operator(&tree,compare))
则会传递此函数的结果,因此整数为1,0或-1。