【问题标题】:How to swap elements in an array of pointers如何交换指针数组中的元素
【发布时间】:2017-11-25 02:27:52
【问题描述】:

我的功能需要帮助,这就是我所做的。

void ShuffleCards(int (*deck_of_cards)[NUM_CARDS])
{

    int i = 51;
    int j, temp;
    while(i>0)
    {
        j = rand()%(i+1);
        temp = *deck_of_cards[i];
        *deck_of_cards[i] = *deck_of_cards[j];
        *deck_of_cards[j] = temp;
        i--;
    }
}

我遇到了分段错误,因为我不确定在交换发生之前必须正确编码什么。请帮帮我。

【问题讨论】:

标签: c arrays pointers


【解决方案1】:

我想您有一个用于表示一副纸牌的 int 数组,并且您想对该数组进行洗牌。首先,您没有在卡片组中指定数组大小。假设 NUM_CARDS = 52,

void ShuffleCards(int *deck_of_cards)
{
    int i = NUM_CARDS - 1; //it is better to initialize i in term of NUM_CARDS
    int j, temp;
    while(i>0)
    {
        j = rand()%(i+1); //gives 0 to i
        temp = deck_of_cards[i];
        deck_of_cards[i] = deck_of_cards[j];
        deck_of_cards[j] = temp;
        i--;
    }
}

您的调用函数应如下所示:

int deck_of_cards[NUM_CARDS];

//do something to initialize your deck

ShuffleCards(deck_of_cards);

//do something with the shuffled deck;

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-01
  • 1970-01-01
  • 2022-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多