指向结构的指针的元素只返回 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() 调用中有&
?它应该只是spe->coeff
。
摆脱你当前的编译器(设置)并开始使用gcc -Wall
【参考方案1】:
问题是你通过引用传递变量 spe->coeff 和 spe->power,而你想打印这些值,所以只需在你的 printf 中去掉符号 &,比如:
printf("%f coeff, %f power", spe->coeff, spe->power);
请记住,通过引用指向变量会为您提供该变量在内存中的地址。
【讨论】:
哇,这真是一个愚蠢的错误。感谢您抽出宝贵时间提供帮助以上是关于指向结构的指针的元素只返回 0的主要内容,如果未能解决你的问题,请参考以下文章