【问题标题】:elements of a pointer to a struct just returning 0指向结构的指针的元素只返回 0
【发布时间】:2022-01-12 14:38:18
【问题描述】:

所以我想要一个名为 poly_el 的结构,它存储多项式元素的系数和幂的值(例如,3x^4 将在结构中存储为 3 和 4)。我当然希望这些是 double 类型。最终,我希望制作一个这样的元素的链表来表示一个完整的多项式。所以我使用了一个指向结构的指针,由于某种原因,指针只返回 0 而不是我分配给它的值。

这里是代码的要点:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <ctype.h>


struct poly_el {
  double coeff;
  double power;
  struct poly_el *next;
};

int main() {
  double a=10.0;
  double b=20.0;
  struct poly_el *spe;
  spe=(struct poly_el *)malloc(sizeof(struct poly_el));
  spe->coeff=a;
  spe->power=b;
  printf("%f coeff, %f power", &spe->coeff, &spe->power);
}

我希望它输出 10 系数和 20 功率,但它只输出 0.000。另外,我尝试过 %lf,%ld 而不是 %f 并且还尝试过使用浮点数执行相同的代码。这些似乎都不起作用。我觉得我的 a 和 b spe->coeff 和 power 的分配有某种错误。

【问题讨论】:

  • 直接将值发送到 printf。
  • 为什么在 printf() 调用中有&amp;?它应该只是spe-&gt;coeff
  • 摆脱你当前的编译器(设置)并开始使用gcc -Wall

标签: c pointers struct


【解决方案1】:

问题是你通过引用传递变量 spe->coeff 和 spe->power,而你想打印这些值,所以只需在你的 printf 中去掉符号 &,比如:

printf("%f coeff, %f power", spe->coeff, spe->power);

请记住,通过引用指向变量会为您提供该变量在内存中的地址。

【讨论】:

  • 哇,这真是一个愚蠢的错误。感谢您抽出宝贵时间提供帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-01-04
  • 1970-01-01
  • 1970-01-01
  • 2014-12-30
  • 1970-01-01
  • 1970-01-01
  • 2021-02-02
相关资源
最近更新 更多