gpt4 book ai didi

c++ - 为什么只有 char* 是 ,而不是其他数据类型?

转载 作者:IT老高 更新时间:2023-10-28 22:01:14 26 4
gpt4 key购买 nike

我正在学习 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

为什么只有 char 类型指针给出 Bad Ptr 而其他指针类型没有? enter image description here

我现在不关心指向的值。我没有取消引用它们(这就是上面出现这些错误的原因)。我只是在查看这三个指针的监 window 口。

最佳答案

对于大多数指针类型,Visual Studio 中的 Watch 窗口显示指针的值(它指向的地址),并允许您通过展开 + 来访问指向的值图标。因此,对于一个指向 int 的空指针,它只会显示 null0x00000000 或类似的东西。

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

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

关于c++ - 为什么只有 char* 是 <Bad Ptr>,而不是其他数据类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30452369/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com