c++ - 参数中的指针和引用

标签 c++ c pointers pass-by-reference

我在几个树代码中看到树类的函数同时具有 * 和 & 节点 例如,要在 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/

相关文章:

c - 如何使用 fork() 打开新的终端窗口?

c - 结构的大小

c++ - 有没有一种简单的方法来获取用 C++ 打印的字符数?

c - 在 for 循环中交换语句

c++ - 立方图上的 OpenGL 奇怪的红绿蓝线重复三次

c - 以十六进制格式获取文件 - 我的输出与 xxd 命令输出

c - 为什么我在函数 search_lastname 中遇到段错误?

c - 访问传递给函数的链表数组的成员

c++ - 如果目标对象死亡,Qt::BlockingQueuedConnection emission 会发生什么?

c++ - C++ 中对象实例化的方法访问