我在几个树代码中看到树类的函数同时具有 * 和 & 节点 例如,要在 BST 中插入一个节点,函数是这样的
insertnode(node * &t,string value)
{
t = new node; t-> val = value
// code to find right place in BST
}
我想知道为什么我们通常将引用传递给指针,尤其是在这种情况下。如果还有其他情况,请同时说明,谢谢
而不是发布另一个问题。 有人还可以指出对象类的使用吗?我的意思是使用对象类的实例是否为所有子类分配了所有内存?即 int float 等
最佳答案
与任何其他变量一样,指针按值传递,除非您指定要按引用传递它。
void foo(int* x)
{
x = new int[1];
}
void goo(int*& x)
{
x = new int[1];
}
int* x = NULL;
foo(x);
//x is NULL here, and you also have a memory leak
goo(x);
//x points to an array of 1 int
在你的例子中,你传递了一个指针的引用,因为你想修改原始指针。修改指针并不意味着改变它指向的值,而是改变它指向的地址。
关于c++ - 参数中的指针和引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9564092/