我有一个参数是参考的函数。我需要将指针参数传递给此函数。以下声明对这种情况有效吗?如果没有,我需要做什么?
function foo(int& myParam) {
//some code here
}
//function call
int *myArg;
foo(myArg);
答案 0 :(得分:4)
要通过引用传递指针的值,必须取消引用指针。但在您的情况下,您永远不会初始化指针,因此取消引用它将导致未定义的行为。
int* ptr;
int& ref = *ptr; // dereferencing garbage pointer
您可以取消引用指针并让编译器将值转换为引用,但您必须首先使用有效指针,例如:
int *ptr = new int();
foo(*ptr)
delete ptr;
或者:
int i;
int *ptr = &i;
foo(*ptr)
答案 1 :(得分:0)
如果你想使用myArg指向的值,你可以简单地编码:
foo(*myArg);