洗牌与结构和枚举卡

时间:2014-04-04 06:24:31

标签: c arrays struct enums shuffle

我有一个main.c文件,其中包含所有启动内容。 我已初始化了套牌,但是我无法将数组的临时值存储到变量中: `

enum suit
{
    CLUB, DIAMOND, HEART, SPADE
};

typedef enum suit Suit;

enum face
{
    ONE, TWO, THREE, FOUR, FIVE, SIX, SEVEN, EIGHT, NINE, TEN, JACK, 
    QUEEN, KING
};
typedef enum face Face;

struct card
{
    Suit c_suit;
    Face c_face;
};

typedef struct card Card;
void shuffle(Card * deck);

void shuffle(Card * deck)
{
    int temp;
    int y, x, t=0;  
    for (x = 52; x > 0 ; x--)
    { 
        y = rand() % x;   
        temp = deck[x];
        deck[x] = deck[y];
        deck[y] = temp;
    }

}

`

1 个答案:

答案 0 :(得分:2)

您要将deck[x]的地址指定为int变量。

temp = &deck[x];

你想做简单的交换,所以只需将deck[x]的'值'分配给temp,即

temp = deck[x];

<强>更新
正如 cyco130 在评论中所说,您可以在编译时使用-Wall标志向gcc启用更多编译器警告。
但是,AFAIW,编译器应该将此问题报告为错误,因为您尝试将int *值存储到int而没有明确的类型转换。