我有一个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
。