私は、以下の状況で私が見ていることについて概念的に混乱しています。ポインタはmain()からfunction(func1())に参照渡しされます。 func1()はさらに、このポインタを参照によってfunc2()に渡します。 func2()がポインタを更新して新しいアドレスを指すようになったら、これはmain()に反映されます。ポインタは参照渡しですか? (サニティチェック)
疑問:それはへのポインタへのポインタのポインタ、バックグラウンドでのいくつかの並べ替え
1.ですか?
2.)PTR1及びPTR2は、(メインで参照によって渡された場合* func1の中& PTR1と* & PTR2()がNULLに初期化され参照はありませんか?私は参照がNULLに初期化することはできませんを読んだ。
#include <iostream>
using namespace std;
void func2(int *&ptr2)
{
int var2 = 123;
ptr2 = &var2;
cout << endl <<"func2 - ptr2: " << ptr2 << endl;
}
void func1(int *&ptr1, int *&ptr2)
{
int var1 = 111;
ptr1 = &var1;
func2(ptr2);
cout << endl << "func1 - ptr1: " << ptr1 << " ptr2: " << ptr2 << endl;
}
int main()
{
int *ptr1 = NULL;
int *ptr2 = NULL;
cout << "main - ptr1: " << ptr1 << " ptr2: " << ptr2 << endl;
func1(ptr1, ptr2);
cout << "main now - ptr1: " << ptr1 << " ptr2: " << ptr2 << endl;
return 0;
}
OUTPUT:
main - ptr1: 0 ptr2: 0
func2 - ptr2: 0x28fe3c
func1 - ptr1: 0x28fe6c ptr2: 0x28fe3c
main now - ptr1: 0x28fe6c ptr2: 0x28fe3c
これは参照の使用の全体点です。参照と関数を削除すると、変更は表示されません。事実、ref演算子は、追加のポインタを省略すると便利です。 – lipp
参照は、参照しているオブジェクトの別の名前と同じです。エイリアスのように。 – Bateman
そのコードの目的は何ですか? – perencia