如果我声明一个指针,class 的指针成员会发生什么情况?
What happen with the pointer members of a class if I declare a pointer?
我写了下面的代码:
#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
中的最后一个内存(不确定)。您不应该取消引用这种指针,因为编译器会抛出违规内存 access.If 您不想将类型 Node
的对象分配给指针,强烈建议您将指针分配给NULL
value.In 在这种情况下,如果指针指向真实对象或未通过检查他的地址分配,您将始终能够检查代码。
我写了下面的代码:
#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
中的最后一个内存(不确定)。您不应该取消引用这种指针,因为编译器会抛出违规内存 access.If 您不想将类型 Node
的对象分配给指针,强烈建议您将指针分配给NULL
value.In 在这种情况下,如果指针指向真实对象或未通过检查他的地址分配,您将始终能够检查代码。