【问题标题】:c - expecting struct pointer but getting struct and the reversec - 期望结构指针但得到结构和相反
【发布时间】:2016-09-02 12:10:29
【问题描述】:

我正在尝试从 main 调用函数“玩游戏”,玩游戏的输入类型为“struct player”。但是,我收到错误:

game.h:18:17: note: expected ‘struct player *’ but argument is of type ‘struct player’
struct player * play_game(struct player * first, struct player * second);
reversi.c:47:4: error: incompatible type for argument 1 of ‘play_game’
*winner = play_game( first , second );

随着参数 2 的错误被抛出。

当我将参数类型切换为指针时,我得到:

reversi.c:47:12: error: incompatible types when assigning to type ‘struct player’ from type ‘struct player *’
*winner = play_game( first , second );

我环顾四周,但似乎没有太多关于它的内容,而且它通常与 .h 文件本身有关,而我几乎可以肯定该错误必须涉及以下行:“*winner = play_game ( 第一秒 );” (此处提供了其他行)

我也尝试过更改所有指针,即使如果它起作用了我会迷失方向,但除了在同一错误上得到变化之外,我什么也没得到。

我已将代码剪掉以进行发布,但它仍然会产生相同的错误。

#include <stdio.h>
#include <stdlib.h>

#define NAMELEN 20

struct player * play_game(struct player * first, struct player * second) ;

enum cell
{
        BLANK, RED, BLUE
};

struct player
{
    char name[NAMELEN + 1];
    enum cell token;
    unsigned score;
};

int main(void)
{
    struct player first, second, *winner = NULL;
    enter code here
    *winner = play_game( first , second );

    return EXIT_SUCCESS;
}


struct player * play_game(struct player * first, struct player * second) 
{

    return first;

}

提前感谢您提供的任何帮助。

【问题讨论】:

  • 你知道事物和指向事物的指针的区别吗?
  • @immibis 不太好,我怀疑。我要回去看看他们。

标签: c pointers gcc struct


【解决方案1】:

函数调用必须看起来像

winner = play_game( &first , &second );

【讨论】:

  • 谢谢;我认为这可能涉及在函数内部添加指针,但我没想到要从获胜者之前删除那个。
【解决方案2】:

您已将函数定义为通过引用调用参数。所以你需要调用带有参数call by reference的函数。

 winner = play_game( &first , &second );

并在将返回值分配给获胜者变量时删除*

【讨论】:

  • 这不是“引用调用”,它是一个带有指针值的普通调用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-03
  • 2021-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多