只是试图在这里解决一个概念上的问题。在教科书中的此示例中,它尝试通过引用地址将结构的地址传递给以下函数。

在我看来,我假设自从传递“&address”以来,我将不得不在函数内取消引用以使用struct操作,例如这样

(*planet)->name;

,更糟糕的是,他们在函数中使用“&planet”,这是否会像
&(&planet)

在我看来,就像他们在结构的地址上使用结构运算符一样,而不是结构本身。
if (read_planet_ptr(&planet) != EOF) {

...


int read_planet_ptr(planet_t *planet) {

  int nvals_read;
  printf("Enter %s:\n", PLANETPROMPT);
  nvals_read = scanf("%s %s %lf %lf %lf",
    planet->name,
    planet->orbits,
    &planet->distance,
    &planet->mass,
    &planet->radius);
  if (nvals_read != 5) {
    return EOF;
  } else {
    return 0;
  }
}

任何帮助都将不胜感激

最佳答案

&planet->distance实际上被评估为&(planet->distance),因此意味着获取结构成员的地址,scanf()要求使用输入值更新该成员。

关于c - C-将结构地址作为函数参数传递,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24922337/

10-11 22:01