指向结构的指针的元素只返回 0

Posted

技术标签:

【中文标题】指向结构的指针的元素只返回 0【英文标题】:elements of a pointer to a struct just returning 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 【参考方案1】:

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

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

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

【讨论】:

哇,这真是一个愚蠢的错误。感谢您抽出宝贵时间提供帮助

以上是关于指向结构的指针的元素只返回 0的主要内容,如果未能解决你的问题,请参考以下文章

指针问题

C++指针问题,请问如何定义一个返回值为结构体指针数组的函数?

返回指向本地结构的指针

在c ++中返回指向向量元素的指针

数据结构

返回指向受保护的内部类元素的指针