将指针传递给参数为引用的函数

时间:2016-11-11 16:59:57

标签: c++ pointers reference

我有一个参数是参考的函数。我需要将指针参数传递给此函数。以下声明对这种情况有效吗?如果没有,我需要做什么?

function foo(int& myParam) {
    //some code here
}

//function call
int *myArg;
foo(myArg);

2 个答案:

答案 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);