2016-11-11 188 views
0

我有一个函数,其参数是引用。我需要将一个指针参数传递给这个函数。下面的声明是否适用于这种情况?如果不是,我需要做什么?将指针传递给参数为参考的函数

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

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

难道你试一下?你的编译器说什么? – aschepler

+0

查看他们发布的答案,他们会做你想做的。但是你的代码应该工作,而不是你期望的方式。知道指针是一个内存地址值,它也恰好是一个整数。所以在你的情况下,你将传递对指针的引用,而不是它指向函数的参数的值。所以它不会有你期望的价值,如果你搞砸它,它可能会导致一些非常不可预测的结果。 – Rob

回答

0
如果你希望使用myArg指出值

,你可以简单的代码:

foo(*myArg); 
4

要通过引用传递指针的值,则必须取消引用指针。但在你的情况下,你永远不会初始化指针,所以解除引用会导致未定义的行为。

int* ptr; 
int& ref = *ptr; // dereferencing garbage pointer 

您可以取消引用指针,让编译器把价值为参考,但是你必须首先有一个有效的指针,例如:

int *ptr = new int(); 
foo(*ptr) 
delete ptr; 

或者:

int i; 
int *ptr = &i; 
foo(*ptr)