【问题标题】:In C, how to shuffle pointers of an array index in a random order在C中,如何以随机顺序打乱数组索引的指针
【发布时间】:2019-01-28 02:52:34
【问题描述】:

我正在尝试创建一个函数来使用指针对整数数组进行洗牌以进行学校作业,我对 c 比较新,所以我不确定应该如何正确完成它。

下面是到目前为止我尝试过的代码,但是我得到了很多转换错误,或者错误告诉我cards[] 不是数组。

void ShuffleDeck(cards[52]){
    int temp;
    int *firstIndxPtr ;
    firstIndxPtr = cards[0];
    int *randIndxPtr1;
    for (int x = 52; x > 0 ; x--){
        randIndxPtr1 = cards[rand() % x];   
        temp = (int) randIndxPtr1;  
        randIndxPtr1 = firstIndxPtr;
        (int) firstIndxPtr = temp;}
}

【问题讨论】:

  • (int) firstIndxPtr = temp 转换不能那样工作。您不会更改分配给的变量的类型
  • 如果你用正确的类型声明变量,通常这意味着不需要强制转换。
  • 好吧,你声明了cards[52].... 还是没有?在ShuffleDeck() 的参数声明中,您需要在cards 参数前面放置一个类型标识符,以使其成为一个数组,类似于int cards[52]。这就是我们要求您发布Minimal, Complete, and Verifiable example 的原因,正如所发布的,目前尚不清楚这是您遇到的错误还是您在复制时犯的一些错字。

标签: c pointers shuffle


【解决方案1】:

既然是你的赋值,你需要了解指针,以及它指向的值,你应该为你的指针使用以下值之一。

firstIndexPtr = &cards[0];
firstIndexPtr = cards;

您不能将数组cards[52] 作为函数参数传递,它应该类似于

void ShffuleDeck(int *cards, int number_of_cards)
{
}

【讨论】:

    猜你喜欢
    • 2021-09-29
    • 2022-01-05
    • 2010-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-03
    • 2011-12-08
    相关资源
    最近更新 更多