C++ 引用指针作为改变指针的参数
C++ reference pointer as parameter to alter pointer
我最近发现 *&
作为函数中的参数。
据我了解,它类似于 **
。
为什么在改变指针的函数中需要它?
例如。使用 new
关键字
假设我有一个指针 int* a
,如果我想在该函数中执行 a = new int;
,为什么我必须将参数作为 "pointer reference" 传递?
如果函数以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
我最近发现 *&
作为函数中的参数。
据我了解,它类似于 **
。
为什么在改变指针的函数中需要它?
例如。使用 new
关键字
假设我有一个指针 int* a
,如果我想在该函数中执行 a = new int;
,为什么我必须将参数作为 "pointer reference" 传递?
如果函数以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