我最近遇到*&
作为函数中的参数。
据我了解,它类似于**
。
为什么在更改指针的函数中需要它?
例如。使用new
关键字
假设我有一个指针int* a
,如果我想在该函数内执行a = new int;
,为什么还要将该参数作为“指针引用”传递?
答案 0 :(得分:9)
如果函数使用int*
作为其参数,则指针将通过值本身传递,这意味着函数内部对指针本身(不是指针对象)的任何修改都与原始指针无关。例如
void foo(int* a) { a = new int; }
int* a = nullptr;
foo(a);
// a is still nullptr here
如果将参数类型更改为int*&
,将会有所不同。
void foo(int*& a) { a = new int; }
int* a = nullptr;
foo(a);
// a gets modified