だから、私は私のポインタを持っています:
int *p = new int(10);
そして、私は次のものを印刷します:
&p which is: 0xbdee018
p which is: 0xb8c254b0
&pはポインターのアドレスをp表し、 is はポインター自体によってマップされた値のアドレスを表します。
それは正しいですか、それとも正反対ですか?
はい、あなたは正しいです。
&pポインタのアドレスを表し、pそれが指しているアドレスを与えます。
P は int へのポインターです。(*p) は、p が指している int の値となるポインター p の値を意味します。(&p) は、ポインターのアドレスを示します。*(&p)=p を意味します。
C++ では、多くの人int* pがint *p. 言語の観点からは、この 2 つの間にまったく違いはありません。それは、人間の認識の問題です。
int* p言います:「p整数へのポインタです」。&pは、 が格納されるメモリ位置ですp( のデータ型に関係なくp)。pポインタそのものです。その値は、整数が格納されるメモリ位置です (場合を除くp == 0)。*pp が指す値 (への参照) です。C では、多くの人int *pがint* p. 「*pは整数です」と書かれています。これには、 anおよび anint* p, qを宣言する のようなトラップに陥らないという利点があります。int* pint q
値を取得するには、ポインターを逆参照する必要があると思います。
を印刷してみてください*p。これは、アドレスに格納されている値を印刷するためです。これは参照解除されたポインターです。
を&p印刷すると、 の住所の住所が印刷されますp。
印刷pすると、 へのポインタが印刷されpます。