如果大家愿意,我可以发布整个代码,但这是我问题的本质:
typedef struct
{
CardT cards[DECK_SIZE];
int count;
}DeckT;
void shuffleDeck(DeckT *deck){
int k=50;
DeckT *randCard = deck;
DeckT *startCard = deck;
while (k>0){
int r = k % 25;
int i = 0;
for(i=0; i < r; i++, randCard++){
printf("%i %i",i,r);
}
CardT A; //do I declare A to be a Card Struc or a pointer to the array of cards?
A = *randCard; //this is where my program locks up.
*randCard = *startCard; //swapping pointers seems pointless [hehe]
*startCard = A;
printf(" yo yo yo shuffle\n"); //doesn't print this line at all, locks up before
k--;
*startCard++;
}
我知道我需要交换实际元素而不是指针,但是我不确定如何去做。该函数的基本流程是声明两个指向我的牌组的指针,这些指针指向纸牌数组[我需要指定此指针吗?],然后根据k%25交换卡。
我现在不必担心实际交换的随机性,我只想知道如何交换两张卡[它们本身就是结构]。
最佳答案
您的
DeckT *startCard
应该
CardT *startCard = &deck->cards[0];
同上
randCard
,但可以/应该在内循环中移动此变量