は、実際には:基本char型のポインタの問題
char *p;
我々は*p
を持ってp
(p
のアドレス)で値を意味し、p
は単にp
のアドレスを意味しています。私が印刷したいときに意味:
cout << p
なぜp
のアドレスを与え、コンパイラはありませんか?
は、実際には:基本char型のポインタの問題
char *p;
我々は*p
を持ってp
(p
のアドレス)で値を意味し、p
は単にp
のアドレスを意味しています。私が印刷したいときに意味:
cout << p
なぜp
のアドレスを与え、コンパイラはありませんか?
初期化されていないポインタは、どこにもランダムなアドレスを指します。これは、実装/コンパイラ固有です。
あなたの場合、0に初期化されている必要があります。つまり、何も指していないヌルポインタまたはポインタです。したがって、この出力に値の結果を出力しようとします。 このような場合、インテリジェントコンパイラの中にはprint(nil)を行うものがあります。
あなたが変更することでそれを確認することができます
へchar *p;
char *p = 0;
あなたは何すなわち、同じ出力が印刷されます取得する必要があります。
これとは逆に、初期化されている場合/適切に次のように割り当てられ、あなたがアドレスを取得します(それは、アドレスpは、pのアドレスを印刷するために、を指しているでしょう、あなたは& Pを印刷する必要があります):
char *p, c='x';
p=&c;
Here関連するものについての良い読み取りです。
どの言語ですか? – Biffen
'* 'p'は単に' p'のアドレスを意味します*'どうしたらうまくいくのですか? – Biffen
'p'は' char'(それ自身のアドレス)へのポインタです。 '* p'は' p'で指される 'char'値です。したがって、pのアドレスは '&p' **ではなく' p'自身です。 –