【问题标题】:Passing and using struct with typedef使用 typedef 传递和使用 struct
【发布时间】:2016-04-12 21:36:46
【问题描述】:

如何通过将下一个结构与 typedef 传递给另一个类似的函数来使用它?

我已经尝试过这段代码,但我似乎没有工作。

typedef struct stru{
    int num;
} stru;

int main(void)
{
    stru current;
    struc(&current);
    printf("%d", current.num);
}


int struc(stru* current)
{
    *current.num = 1;
    return 0;
}

它不起作用,因为它不是将其设置为 1 的正确方法,我想有人可以帮助我做到这一点,我尝试了一些其他方法,但它们都不起作用

*current.num = 1;

【问题讨论】:

  • @SLaks 很好,它不能设置 *current.num = 1;那样
  • current->num = 1; 后缀的优先级高于一元。
  • 会发生什么?你得到什么错误?
  • @SLaks 错误:表达式必须具有结构或联合类型

标签: c struct typedef


【解决方案1】:

一元 * 的优先级低于 .

因此,您的代码被解析为*(current.num) = 1,这不是您想要的。

相反,您需要先强制取消引用:(*current).num

这很常见,以至于 C 有一个简写形式:current->num

【讨论】:

  • 糟糕; * 应该在括号内。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-05
  • 1970-01-01
  • 2017-10-04
  • 1970-01-01
  • 2021-03-22
相关资源
最近更新 更多