【问题标题】:How do I initialise an entire matrix with 0? [duplicate]如何用 0 初始化整个矩阵? [复制]
【发布时间】:2021-05-04 11:20:13
【问题描述】:

我想将我的矩阵初始化为 0,但它不起作用,因为矩阵的第一部分是一个变量。

int playerCards[playerNum][10] = {0};

我想让矩阵中的所有值都为零。我已经尝试了上面的行,但它告诉我我无法初始化数组。作为参考,playerNum 是一个介于 2 和 6 之间的整数,由用户选择。

【问题讨论】:

  • 你说:但是不行。您能否描述一下它是如何不工作的
  • 它告诉我。下次询问错误时,请提供完整且准确的错误信息。
  • @kaylum 会的。感谢您的反馈

标签: c


【解决方案1】:

你可以使用memset():

int playerCards[playerNum][10];
memset(playerCards, 0, sizeof playerCards);

sizeof 适用于 VLA:在这种情况下,playerCards 被评估,这没有区别,但也意味着在运行时使用 playerNum 的值在运行时将大小计算为 sizeof(int) * playerNum * 10 playerCards 的实例化。

【讨论】:

  • 你真的可以在 VLA 上使用 sizeof 吗?
  • @BillLynch "在 VLA 上使用 sizeof" --> 是的。它在运行时进行评估。
猜你喜欢
  • 2018-12-13
  • 2019-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-15
  • 1970-01-01
相关资源
最近更新 更多