【发布时间】: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':调用的参数太少
我在这里做错了什么?
【问题讨论】:
-
该函数需要
x和y作为单独的参数,而不是结构。 -
printxy(p.a, p.b); -
你有一个接受两个整数参数的函数,而你传递给它的是完全不同的东西。
-
我不同意近距离投票(“不可重现或由错字引起”)。我可以在本地重现编译错误,而且它似乎源于对函数参数的误解而不是拼写错误。
-
另一种选择是将
printxy更改为采用struct point类型的单个参数。int printxy(struct point p) { printf("%d %d", p.x, p.y); }.