HJS*_*HJS 18 c++ pointers visual-studio
我正在学习C++中的指针.例如,在初始化指针时
double* pvalue1 = nullptr;//okay
char* pvalue2 = nullptr; //only this says, "0x00000000 <Bad Ptr>" (in the watch window of Visual C++ 2010)
int* pvalue3 = nullptr; //okay
Run Code Online (Sandbox Code Playgroud)
为什么只有char类型指针给出Bad Ptr而其他指针类型没有?

我不关心目前的尖端价值观.我没有取消引用它们(这就是为什么上面有这些错误).我只是看着这三个指针的观察窗口.
Rei*_*ica 21
对于大多数指针类型,Visual Studio中的Watch窗口显示指针的值(它指向的地址),并允许您通过展开+图标来访问指向的值.因此,对于一个空指针,让我们说,int,它只会显示null或0x00000000或类似的东西.
char*s的处理方式不同.这里,Watch根本不显示指针值,而是直接将指向的数据解释为NUL终止字符串并打印出来.这当然意味着null char*不会给出有意义的结果,因此Bad Ptr.
换句话说,Watch本身会自动对char*指针进行解除引用(仅适用于那些指针).
Mik*_*our 12
据推测,无论你用什么来显示指针值,它也会显示char*指针指向的任何字符串,因为这些指针有时用于指向字符串.
在这种情况下,为null,它不指向任何字符串,因此无论显示什么,它都会告诉您相反.