I’m fairly new to C++ and don’t quite understand function parameters with pointers and references. I have an array of Cards that I want to shuffle using the Fisher-Yates shuffle. The deck is declared as
Card *deck[deckSize];
where deckSize has been declared as 24. The array is then initialized.
I then call the shuffle function:
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;
}
}
If I try to print the value of a card after calling the shuffle function I get a seg fault. Any pointers on how to do this properly?
It looks that your problem does not come from the code posted, which looks fine at a first glance, but from the code around it.
What about using a standard container of cards ? You must fill it, print it first to see if it’s ok, shuffle, and then print it again.