int a = 1, b = 2, c =3;
int *d = &a; int *e = &b; int *f = &c;
int &g = a; int &h = b; int &k = c;
*e = k;
e = &h;
*d = h;
cout << g << ", " << b << ", " << *f << endl;
は、このコードの出力は3,3,3ですが、私は、なぜ:( を理解することができませんでした!ポインタベースのC++コード出力
int a = 1, b = 2, c =3;
int *d = &a; int *e = &b; int *f = &c;
int &g = a; int &h = b; int &k = c;
*e = k;
e = &h;
*d = h;
cout << g << ", " << b << ", " << *f << endl;
は、このコードの出力は3,3,3ですが、私は、なぜ:( を理解することができませんでした!ポインタベースのC++コード出力
See my comments explaining the result of the code
int a = 1, b = 2, c =3; //initialization
int *d = &a; // pointer d has the address of a's memory location
int *e = &b; // pointer e has the address of b's memory location
int *f = &c; // pointer f has the address of c's memory location
int &g = a; // declared g as an alias for a,ie you can use g in place of 'a'
int &h = b; // declared h as an alias for b , similar to the above
int &k = c; // declared k as an alias for c
*e = k; // *e ie b is assigned the value of c (k is alias for c)
e = &h;
*d = h; // *d ie a is assigned the value of b (b=3 and h is alias for b)
cout << g << ", " << b << ", " << *f << endl; // prints g(alias of a), b, f(alias of c)
1.Initially a=b=c=3
2.Aポインタは、その値が別のvariable.Here d
、e
のアドレスである変数であり、f
はa
、b
及びへのポインタでありますそれぞれ
3.When *e=k
(& Bに等しい)アドレスBのコンテンツを2から3に変更される
4.A参照変数は、それは、別の名前であり、別名であります既に存在する変数です。 g
、h
およびk
は参照です。元の変数と参照は同じ値を参照しており、参照の真の美しさは、元の値と同じように参照を使って同じ操作を行うことができますあなたは、この基本的な概念を理解すれば、1から3
int a = b is setting a's VALUE to b's VALUE
int* a = &b is setting a's VALUE to the ADDRESS of b
int& a = b is setting a's ADDRESS to b's ADDRESS (a is a reference to b)
に上記の出力をa
の値を変更variable.Now、h
はb
に初期化された整数参照であり、d
はb
。だから*d=h
のアドレスが含まれていますステートメントはかなり簡単に把握するように見えます。
*e = k;
e
は現在ポインタbである。 k
は、値が3であるc
への参照です。したがって、c
(3)の値をb
のアドレスにコピーします。
状態:A = 1、B = 3、C = 3
e = &h;
e
あなたはh
のアドレスを割り当てるためのポインタです。 h
はb
への参照ですので、これはb
のアドレスをとります。参照のアドレスを取得すると、参照されているもののアドレスが取得されます。
この操作は出力に関係しません。
状態:A = 1、B = 3、C = 3
*d = h;
d
がh
これは、値3を代入3の値を有するb
への参照である、a
へのポインタでありますint型は今、a
あるd
によって指さ:
状態:A = 3、B = 3、C = 3あなたは、あなたのすべての変数に3` `割り当てられ
' A'を、 'B'を、「c」を直接的または間接的に含む。'c'は最初から値が3であった。 '* e = k; '(kは' c'( '= 3')への参照であり、' e'は 'b'へのポインタである)の中の'後で値を変更しないでください。 '' d 'h' '( 'h'は' b '( '= c = 3')への参照であり、' d'は 'a " –
@AlgirdasPreidžius:それは答えとして掲示されるべきです! – AndyG
@AndyGまあ、私はそれをしませんでした。思考の単純なダンプは、私の目には、答えには十分ではないので、私もですそれを正しくフォーマットするのは怠惰だ –