c++ - 在应该按引用传递的地方按值传递指针

标签 c++ pointers reference

我正在学习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++,只需使用访问器和析构函数 :)

关于c++ - 在应该按引用传递的地方按值传递指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28925019/

相关文章:

reference - Rust:引用如何成为类型?

c++ - 类型没有可行的重载 operator[]

c - 将 void 双指针类型转换为 void,为什么?

c++ - 在静态函数中调用成员函数指针

pointers - 为什么在 golang 中不允许对 slice 指针进行索引

c - 试图打印数组的最大值..但打印垃圾

java - 如何裁剪数组的一部分?

java - 如何使用另一个变量实例化一个变量?

c++ - 所有 const 标记方法都隐式 [[nodiscard]] 吗?

c++ - 是否可以在单线程应用程序中的多个 lua_State 之间共享一个表?