0

所以我正在研究这个套牌程序,现在我已经完成了几乎所有工作,我只需要制作一个洗牌功能。但是当我尝试时,我不断收到标题中的错误

为了简短起见,我只发布函数,但基本上我只需要打印一次牌组(有效)然后在函数中洗牌并返回洗牌的牌组并再次打印(现在洗牌)。

我不明白为什么会出现此错误,因为我只使用一种变量类型。如果我能得到一些帮助,那就太好了。

这是相关代码:

int shuffle(int deck[52]); /*Function Prototype*/

int main()
{
     int deck[52], i, n;


     shuffle(deck[52]);  /* Function Call */ 

}

int shuffle(int deck[52])
{
srand(52);

deck[52] = rand();

printf("The deck has been shuffled");

return deck[52];
}
4

3 回答 3

1

shuffle(deck[52])获取数组的第 53 个元素deck并将其传递给shuffle. 试试shuffle(deck)吧。

另请注意,C 数组从零开始,因此有效索引为 [0..51]。 deck[52]超出数组的末尾;读取或写入它会导致未定义的行为,包括为其他变量覆盖内存或崩溃。

于 2013-04-03T20:23:03.830 回答
0
  1. shuffle(deck[52])---> 通过这个你传递了甲板第 53 个元素的地址(你可以从 2:5 看到:注意:预期的 'int *' 但参数的类型是 'int')

  2. 如果你想发送完整的数组,只需将数组名称作为函数参数传递,例如。洗牌(甲板)

    关于他

于 2013-04-03T20:30:21.357 回答
0

数组在 C 语言中基于零,因此desk[52] 是数组长度之外的一。

于 2013-04-03T20:23:16.047 回答