2

これら 2 つの割り当ては同等でしょうか。つまり、まったく同じことを実行しますか?

*pointer = object

pointer = &object

ここで、ポインターは「オブジェクト インスタンス」へのポインターです。

それとも、これはプリミティブ型に対してのみ意味がありますか?

4

4 に答える 4

12

いいえ、これらは同じではありません。

pointer = &objectpointerを指すように設定しobjectます。

*pointer = objectが指すものpointerの値を。の値と等しくなるように設定しますobject

于 2012-04-05T11:32:32.077 に答える
5

絶対違う。

*pointer = object

ポインタが指すメモリを変更します。

pointer = &object

ポインタを変更します。

pointer   ---->    object1
&object   ---->    object

最初のケースでは、これは次のようになります。

pointer   ---->    object
&object   ---->    object   

2番目の場合:

                  ---->    object1 //could turn into a memory leak
&object, pointer  ---->    object
于 2012-04-05T11:32:22.440 に答える
2

いいえ、これらは同等ではありません。1 つ目は、ポインターのターゲット値を右側のオブジェクトと等しくします。2 つ目は、右側のオブジェクトを指すようにポインター自体を変更します。

つまり、最初のオブジェクトの後に、 の値と等しい値を持つ 2 つのオブジェクトがメモリ内に存在しobjectます。2 番目以降、その値を持つオブジェクトは 1 つだけであり、さらにそのオブジェクトを指しているポインターがあります。

于 2012-04-05T11:42:23.097 に答える
0

番号。

最初の式は、オブジェクトの値をポインターに割り当てます。

ポインター変数が 0x1234 を指しているとします。最初の割り当ての後、アドレス 0x1234 には値「オブジェクト」が含まれます。

一方、2 番目の代入では、ポインターがオブジェクトのアドレスを指すようになります。

最初の割り当てポインターの後に値オブジェクトを変更しても、何も気付かないでしょう。

ここで、2 番目の割り当てとして、オブジェクトの値を変更すると、次の方法で更新された値を取得できます。

*pointer. 
于 2012-04-05T11:37:06.810 に答える