0
我有一個函數,其參數是引用。我需要將一個指針參數傳遞給這個函數。下面的聲明是否適用於這種情況?如果不是,我需要做什麼?將指針傳遞給參數爲參考的函數
function foo(int& myParam) {
//some code here
}
//function call
int *myArg;
foo(myArg);
我有一個函數,其參數是引用。我需要將一個指針參數傳遞給這個函數。下面的聲明是否適用於這種情況?如果不是,我需要做什麼?將指針傳遞給參數爲參考的函數
function foo(int& myParam) {
//some code here
}
//function call
int *myArg;
foo(myArg);
,你可以簡單的代碼:
foo(*myArg);
要通過引用傳遞指針的值,則必須取消引用指針。但在你的情況下,你永遠不會初始化指針,所以解除引用會導致未定義的行爲。
int* ptr;
int& ref = *ptr; // dereferencing garbage pointer
您可以取消引用指針,讓編譯器把價值爲參考,但是你必須首先有一個有效的指針,例如:
int *ptr = new int();
foo(*ptr)
delete ptr;
或者:
int i;
int *ptr = &i;
foo(*ptr)
難道你試一下?你的編譯器說什麼? – aschepler
查看他們發佈的答案,他們會做你想做的。但是你的代碼應該工作,而不是你期望的方式。知道指針是一個內存地址值,它也恰好是一個整數。所以在你的情況下,你將傳遞對指針的引用,而不是它指向函數的參數的值。所以它不會有你期望的價值,如果你搞砸它,它可能會導致一些非常不可預測的結果。 – Rob