我的理解是,在 C++ 中 & 和 * 相互抵消,即 int *&p 本质上等于 p 作为其在整数 p 地址处的值。
现在,鉴于上述情况,传递对指针的引用是否有效,即说我试图将对指针的引用作为函数中的参数传递,如下所示?
void func(int* &p)
Run Code Online (Sandbox Code Playgroud)
上面的结果不会导致用 & 取消 * 并且只是 int p 吗?如果我尝试以类似的方式传递对类对象指针的引用,它有多正确?
#include <iostream>
using namespace std;
int gobal_var = 42;
// function to change Reference to pointer value
void changeReferenceValue(int*& pp)
{
pp = &gobal_var;
}
int main()
{
int var = 23;
int* ptr_to_var = &var;
cout << "Passing a Reference to a pointer to function" << endl;
cout << "Before :" << *ptr_to_var << endl; // display 23
changeReferenceValue(ptr_to_var);
cout << "After :" << *ptr_to_var << endl; // display 42
return 0;
}
Run Code Online (Sandbox Code Playgroud)