我写了下面的代码:
#include <iostream>
using namespace std;
class Node {
public:
int id;
Node* n;
};
int main()
{
Node* node;
cout << node->n;
return 0;
}
在这种情况下,我声明了一个指针(它未初始化),但在输出中我获得了一个由“n”给出的地址。如果我不初始化指针,为什么代码会显示一个引用?
最佳答案
它是一个野指针。 VC 编译器为这些指针分配值 0xcdcdcdcd
,它可能指向 RAM
中的最后一个内存(不确定)。你不应该取消引用这种指针,因为编译器会抛出内存访问违规。如果你不想将类型为 Node
的对象分配给指针,强烈建议你分配指针具有 NULL
值。在这种情况下,如果指针指向真实对象或未通过检查其地址分配,您将始终能够检查代码。
关于c++ - 如果我声明一个指针,类的指针成员会发生什么情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38005066/