【问题标题】:getting error when using struct and pointer使用结构和指针时出错
【发布时间】:2023-03-15 20:05:01
【问题描述】:

我正在测试我们在学校做的一些事情。我有一个结构 MyStruct 和两个指针,但是当我想使用指针时,两个指针都会出现此错误:

使用了未初始化的局部变量“p”

struct MyStruct {
    int id;
    double value;
};

MyStruct *p, *q;
double z = 10;
double y = 16.17;
(*p).value = z;
(*q).value = y;
cout << (*p).value << " " << (*q).value << endl;

【问题讨论】:

  • 你为什么还要在这里使用指针?
  • 因为我们的老师会问我们诸如“p=q 运算的结果是什么”之类的问题..
  • @Honza -- 在上面的搜索框中输入:“未初始化的指针 c++”。这个问题的变体被问了很多。这个可以帮助你:stackoverflow.com/questions/32936349/…。如果您将来确实需要问这样的问题,请包含足够的内容,以便在我们剪切和粘贴它时 sn-p 将编译。 (希望这不是太有毒)。

标签: c++ pointers struct compiler-errors


【解决方案1】:

您的 pq 指针未初始化,因此尝试取消引用它们是未定义的行为!

如果您真的想在这里使用指针,请确保它们指向有效内存。例如:

struct MyStruct {
    int id;
    double value;
};

MyStruct *p = new MyStruct, *q = new MyStruct; // <- allocate memory with `new`
double z = 10;
double y = 16.17;
(*p).value = z;
(*q).value = y;
cout << (*p).value << " " << (*q).value << endl;

delete p; // <- free memory with `delete`
delete q;

【讨论】:

    【解决方案2】:

    您需要为 p 和 q 结构分配内存。你正在做的是试图访问一些不指向任何地方的指针。

    添加这两行,完成后不要忘记删除 p 和 q

    p = new MyStruct;
    q = new MyStruct;
    

    【讨论】:

      猜你喜欢
      • 2023-01-14
      • 1970-01-01
      • 2022-01-01
      • 2020-06-05
      • 1970-01-01
      • 1970-01-01
      • 2018-09-09
      • 2019-07-18
      • 1970-01-01
      相关资源
      最近更新 更多