你能解释一下这个函数参数内部的空指针吗?

Can You Explain This Void Pointer Inside Function Paramter?

这是有问题的代码!我没有花太多时间在 C++ 上,我正在实现一个二叉搜索树。

void BST::Preorder(void(*visit)(const Node *))

后面的函数是这样调用的:

bst.Preorder(PrintNode)

PrintNode 实现如下:

void PrintNode(const Node* n)
{
    cout << n->GetValue() << ",";
}

要求实现此预购功能--但我对这里发生的事情感到非常困惑。谁能给我指出正确的方向。谢谢。

这是一个接受const Node *和returnsvoid函数指针类型的参数,参数名称是visit.

换句话说,如果你有像func()这样的函数,你可以把它传递给BST::Preorder()

void func(const Node * )
{
    //do something
}
void BST::Preorder(void(*visit)(const Node *))
  • 这是 BST class 的 Preorder 函数。
  • 那个函数的参数是一个函数指针。
  • *visit 表示它是一个函数指针,它接受一个 const Node * 作为它自己的参数和 return void.

所以通常您必须在其他地方实现 visit 功能。然后在 Preorder 函数的某处使用那个 visit 函数。

所以Preorder是一个函数,它将遍历二叉搜索树中的所有节点(以特定顺序)并在每个节点上做某事。因此,以 Preorder 的调用者可以指定在每个节点上要执行的操作的方式编写 Preorder 是很有用的。这就是 visit 参数的目的。它是 Preorder 应该在它访问的每个节点调用的函数(实际上是一个函数指针)。在示例中,每个节点都将被打印,但是通过向 Preorder 提供不同的函数作为参数,您可以使其执行不同的操作。