【发布时间】:2009-05-28 17:44:17
【问题描述】:
我对 C++ 还很陌生,不太了解带有指针和引用的函数参数。我有一系列卡片,我想使用 Fisher-Yates 洗牌来洗牌。甲板被声明为
Card *deck[deckSize];
其中deckSize 已声明为24。然后初始化数组。 然后我调用 shuffle 函数:
void shuffle (Card * deck[]) {
int deckSize = 24;
while (deckSize > 1) {
long int k = lrand48();
k = k %24;
deckSize--;
Card * temp = deck[deckSize];
deck[deckSize] = deck[k];
deck[k] = temp;
}
}
如果我在调用 shuffle 函数后尝试打印卡片的值,则会出现 seg 错误。有关如何正确执行此操作的任何指示?
【问题讨论】:
-
这一行中的 temp 是什么:deck[k] = temp;?
-
看起来您在“deckSize--”之后缺少一个“Card *temp = deck[deckSize]”。这是复制+粘贴错误,还是您的代码中实际上缺少该行?
-
我看不出该代码有什么问题。我认为问题在于打印卡的值或数组的初始化。你应该为那些发布代码。