你能解释一下这个函数参数内部的空指针吗?
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
提供不同的函数作为参数,您可以使其执行不同的操作。
这是有问题的代码!我没有花太多时间在 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
提供不同的函数作为参数,您可以使其执行不同的操作。