これら 2 つの割り当ては同等でしょうか。つまり、まったく同じことを実行しますか?
*pointer = object
pointer = &object
ここで、ポインターは「オブジェクト インスタンス」へのポインターです。
それとも、これはプリミティブ型に対してのみ意味がありますか?
これら 2 つの割り当ては同等でしょうか。つまり、まったく同じことを実行しますか?
*pointer = object
pointer = &object
ここで、ポインターは「オブジェクト インスタンス」へのポインターです。
それとも、これはプリミティブ型に対してのみ意味がありますか?
いいえ、これらは同じではありません。
pointer = &object
pointer
を指すように設定しobject
ます。
*pointer = object
が指すものpointer
の値を。の値と等しくなるように設定しますobject
。
絶対違う。
*pointer = object
ポインタが指すメモリを変更します。
pointer = &object
ポインタを変更します。
pointer ----> object1
&object ----> object
最初のケースでは、これは次のようになります。
pointer ----> object
&object ----> object
2番目の場合:
----> object1 //could turn into a memory leak
&object, pointer ----> object
いいえ、これらは同等ではありません。1 つ目は、ポインターのターゲット値を右側のオブジェクトと等しくします。2 つ目は、右側のオブジェクトを指すようにポインター自体を変更します。
つまり、最初のオブジェクトの後に、 の値と等しい値を持つ 2 つのオブジェクトがメモリ内に存在しobject
ます。2 番目以降、その値を持つオブジェクトは 1 つだけであり、さらにそのオブジェクトを指しているポインターがあります。
番号。
最初の式は、オブジェクトの値をポインターに割り当てます。
ポインター変数が 0x1234 を指しているとします。最初の割り当ての後、アドレス 0x1234 には値「オブジェクト」が含まれます。
一方、2 番目の代入では、ポインターがオブジェクトのアドレスを指すようになります。
最初の割り当てポインターの後に値オブジェクトを変更しても、何も気付かないでしょう。
ここで、2 番目の割り当てとして、オブジェクトの値を変更すると、次の方法で更新された値を取得できます。
*pointer.