我很難引用結構中的內存,我不確定我的語法是否正確(儘管考慮我認爲的其他帖子我很好)。 代碼在運行時崩潰。 據我所知,我已經分配了所需的momory(52卡 - 第66行),但我不確定要施加什麼樣的投射。 我只需要這個小小的推動和指導,非常感謝!引用指向結構的指針,該結構包含指向結構的指針的指針
#include <stdio.h>
#define DECK_SIZE (52)
/* the enum suite definition */
enum suite {
diamond = 1,
club,
heart,
spade
};
/* the card definition */
struct card {
int number;
enum suite type;
};
/* the deck definition */
struct deck {
struct card ** cards;
int numCards;
};
/* **
* Name: addCard(deck *myDeck);
* Purpose: Add a card to the deck
** */
void addCard(struct deck * myDeck)
{
int number,suiteType;
printf("Please enter card number: \n");
scanf("%d",&number);
printf("Please enter suite type: \n");
scanf("%d",&suiteType);
/* increase myDeck->numCards by one */
myDeck->numCards += 1;
/* reallocate the block and increase the size by one */
*(myDeck->cards) = (struct card*) realloc (*(myDeck->cards), sizeof(struct card) * myDeck->numCards);
if (NULL == *(myDeck->cards)) {
printf("realloc failed - exiting..\n");
free(*(myDeck->cards));
return;
}
/* put the data */
myDeck->cards[myDeck->numCards-1]->number = number;
myDeck->cards[myDeck->numCards-1]->type = suiteType;
}
/***
* Name: initializeDeck();
* Puspose: create a deck memory block and fill it
***/
struct deck * initializeDeck()
{
struct deck * myDeck;
int num,suite,i;
/* allocate memory for a deck */
myDeck = (struct deck*) malloc (sizeof(struct deck));
if (NULL == myDeck) {
printf("Failed to allocate a deck, exiting..\n");
return 0;
}
/* allocte 52 cards */
myDeck->numCards = DECK_SIZE;
myDeck->cards = (struct card**) malloc (sizeof(struct card) * myDeck->numCards);
if (NULL == *(myDeck->cards)) {
printf("Failed to allocate 52 cards, exiting..\n");
free(myDeck);
return 0;
}
/* fill the deck */
num = 1;
suite=1;
for (i = 0; i<DECK_SIZE; i++) {
myDeck->cards[i]->number = num;
myDeck->cards[i]->type = suite;
num++;
if (num > 13) {
num = 1;
suite++;
}
}
return myDeck;
}
int main()
{
struct deck * myDeck;
myDeck = initializeDeck();
addCard(myDeck);
return 0;
}
非常感謝你爲深入解釋!非常幫助我! – shleim