spa*_*ark 1 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
}
Run Code Online (Sandbox Code Playgroud)
我想知道为什么我们通常引用指针,特别是这种情况.还请提及是否还有其他任何情况,谢谢
而不是发布另一个问题.有人也可以指出对象类的使用吗?我的意思是使用对象类的实例它是否分配了所有子类的所有内存?即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
Run Code Online (Sandbox Code Playgroud)
在您的情况下,您传递对指针的引用,因为您要修改原始指针.修改指针并不意味着更改它指向的值,而是更改它指向的地址.
| 归档时间: |
|
| 查看次数: |
164 次 |
| 最近记录: |