【问题标题】:Using a variable to declare multiple structs in C使用变量在 C 中声明多个结构
【发布时间】:2017-09-20 10:10:17
【问题描述】:

我想知道是否有一种方法可以使用 for 循环中的 i 变量声明 x 数量的结构:

int playersAmount, i;

printf("How many players are there?");
scanf("%i", &playersAmount);

for (i = 1; i <= playersAmount; i++) {
    struct players //player(i);
}

假设我希望有 5 个玩家。我希望 for 循环基于 i 变量创建 struct player player1、struct player player2、struct player player 3 等。

谢谢!!!

【问题讨论】:

  • 我已经定义了结构,但没有将它包含在给定的代码体中。 :)
  • 在 C99 或更高版本中,在循环外(不在循环内),您可以写 struct players player[i];。在循环内部,您在每次迭代时丢弃数组,这不是您想要的。这些被称为可变长度数组 — VLA — 并非所有编译器都支持(MS Visual Studio 长期以来一直是一个坚持者,尽管它现在可能支持它;您可以尽可能地检查)。
  • 您可以声明一个指针数组并分配每个指针(例如使用 malloc)并将指针保存到数组中的每个结构。

标签: c variables for-loop struct


【解决方案1】:

你可以像这样创建一个结构数组

struct players myplayers[5];

然后使用 for 循环,您可以分配诸如

之类的值
int main()
{
int a;
 for(a = 0; a < 5; a++)
 {
        myplayers[a].score = 1;
 }

return 0;
}

【讨论】:

  • 您至少应该显示数组的声明。您可能会也可能不会对描述 VLA(可变长度数组)感到自在。 (你可能知道也可能不知道它们的存在。)
猜你喜欢
  • 1970-01-01
  • 2021-12-17
  • 2016-05-09
  • 1970-01-01
  • 2021-08-11
  • 2019-08-19
  • 1970-01-01
  • 1970-01-01
  • 2014-04-25
相关资源
最近更新 更多