2016-05-14 17 views
0

は、実際には:基本char型のポインタの問題

char *p; 

我々は*pを持ってppのアドレス)で値を意味し、pは単にpのアドレスを意味しています。私が印刷したいときに意味:

cout << p 

なぜpのアドレスを与え、コンパイラはありませんか?

+1

どの言語ですか? – Biffen

+1

'* 'p'は単に' p'のアドレスを意味します*'どうしたらうまくいくのですか? – Biffen

+0

'p'は' char'(それ自身のアドレス)へのポインタです。 '* p'は' p'で指される 'char'値です。したがって、pのアドレスは '&p' **ではなく' p'自身です。 –

答えて

0

初期化されていないポインタは、どこにもランダムなアドレスを指します。これは、実装/コンパイラ固有です。

あなたの場合、0に初期化されている必要があります。つまり、何も指していないヌルポインタまたはポインタです。したがって、この出力に値の結果を出力しようとします。 このような場合、インテリジェントコンパイラの中にはprint(nil)を行うものがあります。

あなたが変更することでそれを確認することができます

char *p;

char *p = 0;

あなたは何すなわち、同じ出力が印刷されます取得する必要があります。

これとは逆に

、初期化されている場合/適切に次のように割り当てられ、あなたがアドレスを取得します(それは、アドレスpは、pのアドレスを印刷するために、を指しているでしょう、あなたは& Pを印刷する必要があります):

char *p, c='x';

p=&c;

Here関連するものについての良い読み取りです。

関連する問題