C ++将char指针设置为null

时间:2013-06-04 08:03:05

标签: c++ pointers nullptr

在Visual Studio 2012中,我正在搞乱指针,我意识到这个程序一直在崩溃:

    #include     <iostream>
    using std::cout;
    using std::endl;

    int main () 
   {

       const char* pointer = nullptr;

       cout << "This is the value of pointer   " << pointer << "." << endl;

       return 0;

   }

我的意图是设置pointernull,然后打印地址。即使程序编译,它也会在运行时崩溃。有人可以解释发生了什么吗?

另外,pointer*pointer

的区别是什么

2 个答案:

答案 0 :(得分:7)

您使用的const char*std::cout的{​​{1}}中使用时会被解释为字符串。

将其强制转换为operator <<以查看指针的值(它包含的地址):

void*

或者如果你想变得迂腐:

cout << "This the value of pointer   " << (void*)pointer << "." << endl;

LIVE EXAMPLE

答案 1 :(得分:1)

虽然你可以像我们已经建议的那样cout << "Pointer is " << (void*)pointer << ".\n";我觉得在这种情况下,做这件事的“C方式”更漂亮(没有强制转换)且更具可读性:printf("Pointer is %p\n",pointer);