鱼C论坛

 找回密码
 立即注册
查看: 792|回复: 3

[已解决]问题

[复制链接]
发表于 2021-2-6 22:31:28 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
程序没法正常运行
#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
输出这个
最佳答案
2021-2-7 06:57:18
问题不大, 但还是犯了一个比较典型的错误:
你创建一个指针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;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-2-7 06:57:18 | 显示全部楼层    本楼为最佳答案   
问题不大, 但还是犯了一个比较典型的错误:
你创建一个指针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;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-2-7 14:40:18 | 显示全部楼层
本帖最后由 一叶枫残 于 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;
}
加油!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-2-7 22:14:57 | 显示全部楼层
struct是一个特殊的类,里面的变量和方法都是public
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-14 19:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表