【发布时间】:2016-08-14 01:29:16
【问题描述】:
我是 C 编程新手,想学习基础知识。谁能帮助我如何调用具有指针参数的函数?
我在user.c 文件中的代码:
struct user * play_game(struct user * first, struct user * second)
{
game_board board;
enum cell token;
struct user * current, *other, *winner;
}
代码也在user.h 文件中,但没有 inside 语句。
我怎样才能在main.c 文件中调用它?我不确定参数是什么以及它是如何工作的。
【问题讨论】:
-
您对一元
&和*运算符有什么了解?main()程序中的变量类型是什么,因为这将控制您调用函数的方式。如果你有struct user *u1 = …; struct user *u2 = …;,你将使用struct user *winner = play_game(u1, u2);——但如果你有struct user u1 = { … }; struct user u2 = { … };,你将使用struct user *winner = play_game(&u1, &u2);。 -
我的编程知识真的不好抱歉。我现在所知道的是,如果一个变量有一个 * 这意味着它是一个指针,如果我是正确的,它意味着它的地址。我试图在 main () 之前声明 struct user * play_game(struct user * first, struct user * second) 并在其中放入代码 user * play_game(struct user * first, struct user * second)。不确定我是否以您能理解的方式描述它。
-
您对
*和&的理解或多或少是准确的——粗略但暂时可能已经足够好了。假设您已经在某处定义了struct user,您应该可以接受所显示的函数声明。如果您遇到编译错误,您需要向我们展示 MCVE (minimal reproducible example) — 以及实际的错误消息。行号应该足够小(比如 30 以下),以便我们很容易看出哪里出了问题。如果行号不是那么小,则代码可能还不够少。 -
对不起,代码应该是播放器而不是用户。 “struct player * play_game(struct player * first, struct player * second)。我得到的错误是“error: unknown type name ‘player’”和“error: conflicting types for ‘play_game’”。
-
选择一个名称并使其在任何地方都保持一致。听起来您修复了源文件 (
.c) 中的函数,但忘记更改标题 (.h) 文件。
标签: c function pointers struct