问题
程序没法正常运行#include<iostream>
using namespace std;
typedef struct
{
int x;
int y;
}Node;
main()
{
Node * n1;
n1->x = 0;
cout<<n1.x;
}
--------------------------------
Process exited after 2.543 seconds with return value 3221225477
输出这个 问题不大, 但还是犯了一个比较典型的错误:
你创建一个指针n1, 没有申请内存就直接赋值, 这样是非法的, 把代码改成如下就不会报错了:
#include <iostream>
using namespace std;
typedef struct
{
int x;
int y;
} Node;
int main() //这里的main函数最好给个返回类型, 如果不给也不会报错
{
Node *n1 = new Node;
n1->x = 0;
cout << n1->x; //这里推荐改成->
return 0;
} 本帖最后由 一叶枫残 于 2021-2-7 14:43 编辑
补充一下上面的答案,
Node *n1 = new Node中的new有3个作用:获取内存空间、调用构造函数、返回正确的指针,也就是这一句话执行了
Node *n1= (Node*)malloc(sizeof(Node))
然后在c++里面定义了一个结构体,可以直接使用结构体名称创建,不用typedef,于是简化后如下
#include <iostream>
using namespace std;
struct Node
{
int x;
int y;
};
int main()
{
Node *n1 = new Node;
n1->x = 0;
cout << n1->x; //注意,在一些编译器如dev_c++是不可以使用点操作符来进行结构体的输出,会报错
return 0;
}
加油!!
struct是一个特殊的类,里面的变量和方法都是public
页:
[1]