Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/150.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么只有char*是a<;不良Ptr>;,而不是其他数据类型? 我正在学习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 double*pvalue1=nullptr//可以 char*pvalue2=nullptr//只有这样,“0x00亿”(在Visual C++ 2010的监视窗口中) int*pvalue3=nullptr//可以_C++_Visual Studio_Pointers - Fatal编程技术网

为什么只有char*是a<;不良Ptr>;,而不是其他数据类型? 我正在学习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 double*pvalue1=nullptr//可以 char*pvalue2=nullptr//只有这样,“0x00亿”(在Visual C++ 2010的监视窗口中) int*pvalue3=nullptr//可以

为什么只有char*是a<;不良Ptr>;,而不是其他数据类型? 我正在学习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 double*pvalue1=nullptr//可以 char*pvalue2=nullptr//只有这样,“0x00亿”(在Visual C++ 2010的监视窗口中) int*pvalue3=nullptr//可以,c++,visual-studio,pointers,C++,Visual Studio,Pointers,为什么只有chartype指针给出错误的Ptr,而其他指针类型没有? 我现在不在乎那些指向性的价值观。我没有取消对它们的引用(这就是上面出现这些错误的原因)。我只是在观察窗口中寻找这三个指针。大概,无论您使用什么来显示指针值,都会显示char*指针指向的字符串,因为这些指针有时用于指向字符串 在这种情况下,如果为null,它不会指向任何字符串,因此无论显示什么,它都会告诉您这一点。对于大多数指针类型,Visual Studio中的“监视”窗口会显示指针的值(指针指向的地址),并允许您通过展开+

为什么只有
char
type指针给出错误的Ptr,而其他指针类型没有?


我现在不在乎那些指向性的价值观。我没有取消对它们的引用(这就是上面出现这些错误的原因)。我只是在观察窗口中寻找这三个指针。

大概,无论您使用什么来显示指针值,都会显示
char*
指针指向的字符串,因为这些指针有时用于指向字符串


在这种情况下,如果为null,它不会指向任何字符串,因此无论显示什么,它都会告诉您这一点。

对于大多数指针类型,Visual Studio中的“监视”窗口会显示指针的值(指针指向的地址),并允许您通过展开+图标来访问指向的值。所以对于一个空指针,比如说,
int
,它只会显示
null
0x00000000
或类似的内容

char*
s的处理方式不同。在这里,手表根本不显示指针值,而是直接将指向的数据解释为以
NUL
结尾的字符串并打印出来。这当然意味着空的
char*
不会给出有意义的结果,因此
错误的Ptr


换句话说,Watch本身会自动对
char*
指针进行解引用(并且只对那些指针进行解引用)。

说明了在哪里?打印编译器警告还是运行时错误?如果出现运行时错误,请说明如何使用这些值。尝试取消引用空指针(无论类型如何)是未定义的行为。不要这样做。你应该真正弄清楚你在哪里以及如何得到这个“坏Ptr”。它在VS调试器的“监视”窗口中吗?当流式传输到
std::cout@Angew时是运行时错误吗对不起,如果我不清楚的话。我的意思是在VS的“watch”窗口中,我只是初始化指针并查看watch窗口,而不是尝试去引用或coutit@myaut在pvalue2的监视窗口上显示。其他两个指针目前也不指向任何双精度或整数值,但它们不是坏指针。这是为什么?@HJS:which显示指针大概不会试图显示
double*
int*
指针指向的任何东西;只有
char*
指针经常指向的字符串,因为如果您使用
char*
,您会希望看到这些字符串。谢谢。啊,我把自己和“指针值”和“指向值”混淆了。因此,监视窗口中的“值”列是指针所在的地址(=指针值),在指针的情况下。@ CAMIORBROVAVALD的字符串终止符是,而不是C++空指针常量。