【问题标题】:values unable to assign to struct无法分配给结构的值
【发布时间】:2020-09-09 08:37:15
【问题描述】:

我无法为结构 d 赋值。 它始终为 0。 我找不到错误。

我的打印语句总是打印 x is: 0, y is 0

disc dArr[30];
struct disc *d ;

for (int i = 0; i < numDiscs; i++)
{
    d = &(dArr[numDiscs]);
    x_offset = d->pos[0];
    y_offset = d->pos[1];
    printf("The x is: %f\n", x_offset);
    printf("The y is: %f\n", y_offset);
}

typedef struct disc{
double pos[2];
} disc;

【问题讨论】:

  • 有声明吗?
  • 光盘在哪里定义?
  • 你给它分配内存了吗?
  • 您需要先让d 指向一个结构,然后再尝试分配给该结构。
  • 既然您已经更改了代码,您可能想要的是d = &amp;(dArr[i]) 而不是d = &amp;(dArr[numDiscs])

标签: c++ pointers struct


【解决方案1】:
disc dArr[30];
struct disc *d ;

for (int i = 0; i < numDiscs; i++)
{
    d = &(dArr[numDiscs]);
    ...
}

假设numDiscs == sizeof(dArr) / sizeof(*dArr),尝试访问地址&amp;(dArr[numDiscs]) 处的对象会产生未定义的行为。

你可能想要的是&amp;(dArr[i])

【讨论】:

    猜你喜欢
    • 2019-03-24
    • 1970-01-01
    • 1970-01-01
    • 2018-10-17
    • 2014-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多