考慮:第三個例子發生了什麼?
1.
int one=1;
void func(int* ptr)
{
ptr=&one;
}
int main() {
int nvar=2;
int* pvar=&nvar;
func(pvar);
std::cout<<*pvar<<std::endl;
return0
};
仍將輸出2,因爲創建的PVAr的副本嗎?
2.
void func(int*& ptr)
{
ptr=&one;
}
輸出將是1,因爲指針的基準已經通過,所有好的
3.
int one=1;
void func(int** ptr)
{
*ptr=&one;
//or **ptr=one;
}
int main()
{
int nvar=2;
int* pvar=&nvar;
func(&pvar);
std::cout<<*pvar<<std::endl;
輸出1
我不能沒有詳細說明一個更合適的問題標題,因爲我真的不知道第三個例子是。
+1提到參考不應該是(如果你沒有做明顯愚蠢的事情),永遠不能爲空。 – enobayram