如果大家愿意,我可以发布整个代码,但这是我问题的本质:

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,但可以/应该在内循环中移动此变量

08-16 01:42