按值传递指针,其中应该通过引用传递指针

Pass pointer by value where it is supposed to be passed by reference

本文关键字:指针 引用 按值传递      更新时间:2023-10-16

我正在学习C++

我有一个功能:

void remove_node(node *&rem);

据我了解,rem是一个node*,它是通过引用传递的。我确实需要通过引用传递它,因为我更改了指针。

但有时我需要通过值(递归调用)传递它。我是这样做的:

node *noref = rem->left;
remove_node(noref);

而不是

remove_node(rem->left);

有没有更好的方法?

谢谢。

你想用你的节点做什么?该类的属性和方法是什么?

通常,在使用节点时,您只需更改节点之间的链接,而不是节点本身(例如:双链表)。

struct node {
    node* right;
    node* left;
};
typedef struct node node;
void remove_node(node* n) {
    l_node = n->left;
    r_node = n->right;
    l_node->right = r_node;
    r_node->left = l_node;
    free(n);
}

这将是 C 代码,将其传递给C++只使用访问器和析构函数:)