【问题标题】:How to properly use point structures in C如何在 C 中正确使用点结构
【发布时间】:2022-06-23 00:24:14
【问题描述】:

我目前正在学习 C 并且已经掌握了结构。为了测试它们的工作原理,我编写了以下代码:

#include <stdio.h>

int printxy(int x, int y) {
    printf("%d %d", x, y);
}

int main() {
    struct point {
        int a;
        int b;
    };
    struct point p;
    p.a = 6;
    p.b = 90;
    printxy(p);
}

当我尝试编译它时,我收到以下错误:

错误 C2440: 'function': 无法从 'point' 转换为 'int'

警告 C4024:'printxy':形参和实参 1 的类型不同

错误 C2198:'printxy':调用的参数太少

我在这里做错了什么?

【问题讨论】:

  • 该函数需要 xy 作为单独的参数,而不是结构。
  • printxy(p.a, p.b);
  • 你有一个接受两个整数参数的函数,而你传递给它的是完全不同的东西。
  • 我不同意近距离投票(“不可重现或由错字引起”)。我可以在本地重现编译错误,而且它似乎源于对函数参数的误解而不是拼写错误。
  • 另一种选择是将printxy 更改为采用struct point 类型的单个参数。 int printxy(struct point p) { printf("%d %d", p.x, p.y); }.

标签: c struct


【解决方案1】:

printxy 期望通过两个ints。虽然struct point 仅包含两个ints,但它仍然是不同的类型。 C 不知道如何为您隐式解包这些值。你需要自己做:

printxy(p.a, p.b);

【讨论】:

  • 这个问题只是一个错字,标记为关闭而不是回答。无论哪种方式,它都会被删除。
  • 真的是笔误吗?问题来自对语言的真正误解。
猜你喜欢
  • 2018-04-27
  • 2021-11-27
  • 1970-01-01
  • 2015-02-13
  • 2021-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-25
相关资源
最近更新 更多