我有一个包含所有启动内容的 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;
}
}
`
最佳答案
您正在将 deck[x]
的地址分配给 int
变量。
temp = &deck[x];
你想做简单的交换,所以只需将 deck[x]
的“值”分配给 temp
,即
temp = deck[x];
更新:
正如 cyco130 在他的评论中所说,您可以在编译时使用 -Wall
标志为 gcc
启用更多编译器警告。
但是 AFAIW,这个问题应该被编译器报告为错误,因为您试图将 int *
值存储到 int
而没有显式类型转换。
关于c - 使用结构和枚举洗牌,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22855095/