【问题标题】:How would I pass structs as elements into an array in C [duplicate]我如何将结构作为元素传递到C中的数组中[重复]
【发布时间】:2018-12-10 13:01:17
【问题描述】:

所以我只想说我已经搜索了很多关于这个问题的答案,但我觉得没有人真正回答我的问题(或者我只是不明白,可能是后者)。我对 C 语言比较陌生,所以对于可能很明显的答案,我深表歉意。

我想创建一副由 52 个元素组成的数组,但我希望每个元素都是一个既包含花色又包含价值的结构。我了解如何创建结构,例如:

struct card{ 
  char suit;
  int value;  
};

然而,让我感到困惑的是如何将每个结构作为元素传递到数组中。我一直在努力思考很长时间,我就是想不出来。当然不可能将此结构传递给数组,因为它由 int 和 char 值组成?当然,我可以只使用 for 循环将每个值传递到一个新数组中,例如 int deck[52];但不确定我如何通过 char 套装 - 这可能吗?

【问题讨论】:

  • 你问struct card deck[52];怎么写?
  • “我如何将每个结构作为元素传递到数组中” - 将它传递给 what ?一个函数?或者您是在问如何声明 struct card 的数组?您将如何将数组声明为其他任何内容:Type arr[size];,在本例中为 struct card deck[52];

标签: c arrays struct element


【解决方案1】:

当然不可能将此结构传递给数组, 因为它是由一个 int 和一个 char 值组成的?

其实是可以的:

struct card {
    char suit;
    int value;
};

int main() {
    struct card myCards[52];    // the deck of cards
    struct card someCard = { 1, 20 }; // an instance of the card
    myCards[5] = someCard;  // setting an element of the deck to the card (the rest stays uninitialized)
}

所以在这个例子中,myCards[5] = someCard; 基本上将元素复制到另一个元素。换句话说,它复制了各自的charint

【讨论】:

  • 嘿,谢谢,这回答了我的问题。只是另一个问题(对不起),但在您的示例中 someCard = {1, 20},它指的是价值,哪个指的是花色?它是否按照结构的顺序进行?如果两者都有,我将如何单独访问每个?
  • 没错,它按照struct 的顺序排列,所以在这个例子中suit1value20。例如,您可以单独访问 myCards[5].suit = 3;myCards[5].value = someCard.value; 等值。
  • 语义... 将此结构传递到数组中 不是这里发生的事情。您所展示的是 struct 数组元素可以通过赋值使用 struct 的实例进行更新。 传递结构函数参数中发生的事情。
猜你喜欢
  • 2012-09-29
  • 2017-06-25
  • 1970-01-01
  • 2018-05-14
  • 1970-01-01
  • 2023-03-17
  • 2014-06-19
  • 2019-04-22
  • 1970-01-01
相关资源
最近更新 更多