在应该按引用传递的地方按值传递指针
Pass pointer by value where it is supposed to be passed by reference
我正在学习 C++
我有一个功能:
void remove_node(node *&rem);
据我了解,rem
是一个 node*
,它通过引用传递。我确实需要它通过引用传递,因为我更改了指针。
但有时我需要传值(递归调用)。我是这样做的:
node *noref = rem->left;
remove_node(noref);
而不是
remove_node(rem->left);
有更好的方法吗?
谢谢。
你想用你的节点做什么?
class 的属性和方法是什么?
通常在使用节点时,您只需更改节点之间的链接,而不是节点本身(例如:双链表)。
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++
我有一个功能:
void remove_node(node *&rem);
据我了解,rem
是一个 node*
,它通过引用传递。我确实需要它通过引用传递,因为我更改了指针。
但有时我需要传值(递归调用)。我是这样做的:
node *noref = rem->left;
remove_node(noref);
而不是
remove_node(rem->left);
有更好的方法吗?
谢谢。
你想用你的节点做什么? class 的属性和方法是什么?
通常在使用节点时,您只需更改节点之间的链接,而不是节点本身(例如:双链表)。
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++,只需使用访问器和析构函数:)