指向struct函数指针的函数指针

时间:2017-10-12 13:19:03

标签: c pointers binary-tree

今天我收到了一份关于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)

1 个答案:

答案 0 :(得分:0)

您只需要<canvas id="myCanvas" width="500", height="500"></canvas>,这会将函数地址作为参数传递,而如果执行bst_init_with_comp_operator(&tree,compare))则会传递此函数的结果,因此整数为1,0或-1。