【问题标题】:Unable to pass struct array to function in C无法将结构数组传递给 C 中的函数
【发布时间】:2016-11-06 04:46:44
【问题描述】:

学习 C 并且需要填充五个结构元素的数组,但我似乎无法弄清楚如何将结构数组传递给函数并且我不断收到错误:

error: conflicting types for 'dealFiveHand'

代码如下:

#define HAND_SIZE 5

void dealFiveHand(struct Card *wHand[]);

struct Card {
    char suit;
    char face;
};

int main(void)
{
    struct Card *hand[HAND_SIZE];
    dealFiveHand(hand); 
}

void dealFiveHand(struct Card *wHand[])
{
   ...
}

我是否需要定义和初始化一个指针,然后将该指针传递给函数?

【问题讨论】:

  • 这是完整的错误信息吗?没有别的了?没有信息说明或其他任何作为错误的一部分打印的内容?
  • 请显示完整错误信息。请将准确代码显示为minimal reproducible example(您所拥有的已经很接近了,所以只需将其设为带有实际错误消息的实际代码,包括行号)。

标签: c arrays pointers struct


【解决方案1】:

至少你需要在函数dealFiveHand原型之前移动struct Card的定义——这样函数就知道其参数的类型。

struct Card {
    char suit;
    char face;
};

void dealFiveHand(struct Card *wHand[]);

【讨论】:

  • 谢谢。说得通。不知道我是怎么错过的。
【解决方案2】:

在定义它之前,您指的是 Card。在引用它之前先声明它,作为你的函数的参数dealFiveHand()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多