此代码编译正确但在开始时崩溃。你能告诉我为什么吗?
#include <iostream>
using namespace std;
int main()
{
struct test{
int a;
int b;
};
test* xyz;
xyz->a = 5;
cout<< xyz->a;
}
答案 0 :(得分:1)
xyz只是一个指针,但它并不指向任何东西。您必须在使用其值之前对其进行实例化。你基本上有两个选择:
通过在堆上创建一个新的测试对象来实例化xyz。
//generate new test object. xyz represents a pointer to an object of type test.
test* xyz = new test();
//perform operations on xyz
//deletes xyz from the heap
delete xyz;
在堆栈上创建测试对象,而不使用指针语法。
//defines xyz as an object of class test (instead of a pointer to a test object).
test xyz;
//perform operations on xyz, no need to delete it this time
我鼓励您阅读有关C ++中指针的更多信息。 您可以从以下视频开始: Introduction to Pointers in C++
祝你好运!