如何在 C 中递归调用具有 void 函数作为参数的函数?
How to recursively call a function that has a void function as a parameter in C?
我是C初学者,我想使用一个void函数,它有一个void函数作为传递参数,然后我想用递归的方式调用它。例如void inOrder (struct node *root, void (*f) (struct node *i))
但显然,我不能使用它,因为参数没有 return 类型。有没有人对如何递归调用它有任何建议?
谢谢!
注释中显示的代码,void inOrder (root->leftChild, (*f) (root->leftChild))
有两个错误:
void
不应存在。调用函数时,我们只需在括号中写下其名称和参数即可。我们不声明它的类型。
- 表达式
inOrder (root->leftChild, (*f) (root->leftChild))
试图调用 f
。 inOrder
的第二个参数是一个函数指针,所以传一个函数指针,就是f
:
inOrder(root->leftChild, f)
另请注意,您没有递归调用 f
。 f
不直接或间接调用 f
。 inOrder
可能会调用自身,因此它会递归,但它只是简单地调用 f
,而不是递归地调用。
我是C初学者,我想使用一个void函数,它有一个void函数作为传递参数,然后我想用递归的方式调用它。例如void inOrder (struct node *root, void (*f) (struct node *i))
但显然,我不能使用它,因为参数没有 return 类型。有没有人对如何递归调用它有任何建议?
谢谢!
注释中显示的代码,void inOrder (root->leftChild, (*f) (root->leftChild))
有两个错误:
void
不应存在。调用函数时,我们只需在括号中写下其名称和参数即可。我们不声明它的类型。- 表达式
inOrder (root->leftChild, (*f) (root->leftChild))
试图调用f
。inOrder
的第二个参数是一个函数指针,所以传一个函数指针,就是f
:
inOrder(root->leftChild, f)
另请注意,您没有递归调用 f
。 f
不直接或间接调用 f
。 inOrder
可能会调用自身,因此它会递归,但它只是简单地调用 f
,而不是递归地调用。