2016-11-11 290 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)