2016-05-13 6 views
1

プログラム1:ヌルポインタ例外(チャー対INT)

#include <iostream> 
using namespace std; 
int main() 
{ 
    int *ptr = NULL; 
    cout << "The value of ptr is " << ptr ; 
    return 0; 
} 

プログラム2:

#include <iostream> 
using namespace std; 
int main() 
{ 
    char *ptr = NULL; 
    cout << "The value of ptr is " << ptr ; 
    return 0; 
} 

質問は、プログラム1で出力が安定であるとして:

The value of ptr is 00000000 

プログラム2では、intポインタの代わりに私はcharポインタを使用し、それは私に例外を与えます。

誰でも私の理解を助けることができますか?

答えて

3

< <オペレータが最初のプログラムではint型*を逆参照されていないので、それは単に0としてポインタの値を印刷しています。しかし、第2のプログラムに< <演算子は、文字列としてポインタを逆参照しようとしています、これはクラッシュします。

+0

charポインタの場合の逆参照を避けることはできますか? –

+0

@MukeshPareek [this duplicate](https://stackoverflow.com/questions/10869459/char-pointer-confusing-with-cout-in-c)を参照してください。 – WhozCraig

+0

char *をint型にキャストできます:(int)ptr – kcraigie