1

だから、私は私のポインタを持っています:

int *p = new int(10);

そして、私は次のものを印刷します:

&p which is: 0xbdee018
 p which is: 0xb8c254b0

&pはポインターのアドレスをp表し、 is はポインター自体によってマップされた値のアドレスを表します。

それは正しいですか、それとも正反対ですか?

4

11 に答える 11

3

はい、あなたは正しいです。 &pポインタのアドレスを表し、pそれが指しているアドレスを与えます。

于 2013-06-05T10:54:03.687 に答える
1

P は int へのポインターです。(*p) は、p が指している int の値となるポインター p の値を意味します。(&p) は、ポインターのアドレスを示します。*(&p)=p を意味します。

于 2013-06-05T10:56:42.617 に答える
1

C++ では、多くの人int* pint *p. 言語の観点からは、この 2 つの間にまったく違いはありません。それは、人間の認識の問題です。

  • int* p言います:「p整数へのポインタです」。
  • &pは、 が格納されるメモリ位置ですp( のデータ型に関係なくp)。
  • pポインタそのものです。その値は、整数が格納されるメモリ位置です (場合を除くp == 0)。
  • *pp が指す値 (への参照) です。

C では、多くの人int *pint* p. 「*pは整数です」と書かれています。これには、 anおよび anint* p, qを宣言する のようなトラップに陥らないという利点があります。int* pint q

于 2013-06-05T11:00:40.817 に答える
1

値を取得するには、ポインターを逆参照する必要があると思います。

を印刷してみてください*p。これは、アドレスに格納されている値を印刷するためです。これは参照解除されたポインターです。

&p印刷すると、 の住所の住所が印刷されますp

印刷pすると、 へのポインタが印刷されpます。

于 2013-06-05T10:57:55.347 に答える