2016-05-13 2 views
1

Программа 1:Исключение нулевого указателя (интермедиат Vs полукокса)

#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 

while, в программе 2 вместо указателя int я использовал указатель char, и это дает мне исключение.

Может ли кто-нибудь помочь мне с пониманием?

ответ

3

Поскольку < < оператор не разыменовании Int * в первой программе, это просто печатая значение указателя как 0. Но во второй программе < < оператор пытается разыменования указателя в виде строки , который падает.

+0

Могу ли я избежать де-ссылки в случае с указателем символов? –

+0

@MukeshPareek см. [Этот дубликат] (https://stackoverflow.com/questions/10869459/char-pointer-confusing-with-cout-in-c). – WhozCraig

+0

Вы можете использовать char * как int, например: (int) ptr – kcraigie

Смежные вопросы