我正在尝试学习一些 C 语言,并且我已经从一个简单的纸牌程序开始。
该卡是包含两个整数的结构体,用于面部和花色。我正在通过分配 52 张卡片并进行一个循环来构建一副套牌。
card *Deck = (card*)malloc(sizeof(card) * 52);
for(int i = 0; i < 4; i++){
for(int j = 1; j < 14; j++){
Deck->face = j;
Deck->suit = i;
Deck += sizeof(card);
}
}
Deck -= sizeof(card) * 52;
printDeck(Deck);
free(Deck);
Run Code Online (Sandbox Code Playgroud)
我有一个printCard接受单个指针并打印值的函数,以及一个调用printCard52 次的打印平台函数。如果我在创建卡片时打印卡片,一切都会顺利,但如果我在卡片创建之后打印卡片,因为某些原因我会在第 6 张卡片上出现段错误。我启动gdb并注意到这个输出:
card *Deck = (card*)malloc(sizeof(card) * 52);
for(int i = 0; i < 4; i++){
for(int j = 1; j < 14; j++){
Deck->face = …Run Code Online (Sandbox Code Playgroud)