鱼C论坛

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

[已解决]问题

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

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

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

x
程序没法正常运行
  1. #include<iostream>
  2. using namespace std;
  3. typedef struct
  4. {
  5.         int x;
  6.         int y;
  7. }Node;
  8. main()
  9. {
  10.          Node * n1;
  11.         n1->x = 0;
  12.         cout<<n1.x;


  13. }

复制代码



--------------------------------
Process exited after 2.543 seconds with return value 3221225477
输出这个
最佳答案
2021-2-7 06:57:18
问题不大, 但还是犯了一个比较典型的错误:
你创建一个指针n1, 没有申请内存就直接赋值, 这样是非法的, 把代码改成如下就不会报错了:
  1. #include <iostream>
  2. using namespace std;

  3. typedef struct
  4. {
  5.         int x;
  6.         int y;
  7. } Node;
  8. int main()                                 //这里的main函数最好给个返回类型, 如果不给也不会报错
  9. {
  10.         Node *n1 = new Node;
  11.         n1->x = 0;
  12.         cout << n1->x;                //这里推荐改成->

  13.         return 0;
  14. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-2-7 06:57:18 | 显示全部楼层    本楼为最佳答案   
问题不大, 但还是犯了一个比较典型的错误:
你创建一个指针n1, 没有申请内存就直接赋值, 这样是非法的, 把代码改成如下就不会报错了:
  1. #include <iostream>
  2. using namespace std;

  3. typedef struct
  4. {
  5.         int x;
  6.         int y;
  7. } Node;
  8. int main()                                 //这里的main函数最好给个返回类型, 如果不给也不会报错
  9. {
  10.         Node *n1 = new Node;
  11.         n1->x = 0;
  12.         cout << n1->x;                //这里推荐改成->

  13.         return 0;
  14. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-2-7 14:40:18 | 显示全部楼层
本帖最后由 一叶枫残 于 2021-2-7 14:43 编辑

补充一下上面的答案,
Node *n1 = new Node  中的new有3个作用:获取内存空间、调用构造函数、返回正确的指针,也就是这一句话执行了
  1. Node *n1  = (Node*)malloc(sizeof(Node))
复制代码

然后在c++里面定义了一个结构体,可以直接使用结构体名称创建,不用typedef,于是简化后如下
  1. #include <iostream>

  2. using namespace std;

  3. struct Node
  4. {
  5.         int x;
  6.         int y;
  7. };

  8. int main()
  9. {
  10.         Node *n1 = new Node;
  11.         n1->x = 0;
  12.         cout << n1->x;                                //注意,在一些编译器如dev_c++是不可以使用点操作符来进行结构体的输出,会报错
  13.          
  14.         return 0;
  15. }
复制代码

加油!!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-2-7 22:14:57 | 显示全部楼层
struct是一个特殊的类,里面的变量和方法都是public
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-1 22:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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