使用struct和pointer时出错

时间:2018-03-08 17:05:17

标签: c++ pointers struct compiler-errors

我正在测试我们在学校做的事情。我有一个结构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;

2 个答案:

答案 0 :(得分:1)

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

添加这两行,并且在您使用它们时不要忘记删除p和q

p = new MyStruct;
q = new MyStruct;

答案 1 :(得分: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;