Я новичок в языке C, поэтому в этом коде могут быть логические ошибки, которых я пока не знаю.Существует структура для карточки, которая имеет значение и подходит в качестве полей.
Мой мыслительный процесс для этого кода был:
- Сначала создайте указатель на карточку.
- Во-вторых, создайте карточку в цикле for и назначьте поля этой карточки.
- Наконец, укажите на эту созданную карточку и увеличьте указатель.
Повторите этот процесс по порядкусоздать 52 карты в памяти по адресам подряд.По сути, я собирался создать колоду карт для каждых 8 байтов в памяти, но строка card_ptr++;
внутри цикла не работает, как я думал.Любая идея, что здесь не так?
Я протестировал закомментированный раздел, и он увеличивает указатели на 8 байт, как я и хотел, но цикл не делает этого.Я также добавил печатные заявления, чтобы помочь вам понять, о чем я думаю.
#include <stdio.h>
typedef enum {
SPADES,
HEARTS,
DIAMONDS,
CLUBS,
NUM_SUITS
} suit_t;
struct card_tag {
unsigned value;
suit_t suit;
};
typedef struct card_tag card_t;
int main(){
card_t *card_ptr;
printf("Initial card pointer created. %d\n", card_ptr);
for(int i =SPADES; i < NUM_SUITS; i++){
for(int j = 1; j < 14; j++){
card_t card;
card.value = j;
card.suit = i;
printf("Card -> Value = %d Suit = %d, is created.\n", card.value, card.suit);
card_ptr = &card;
printf("%d points to the last card.\n", card_ptr);
card_ptr++;
printf("Pointer is incremented to %p\n\n", card_ptr);
}
}
/*card_t *card_ptr;
printf("%d\n", card_ptr);
card_ptr++;
printf("%d\n", card_ptr);
card_ptr++;
printf("%d\n", card_ptr);
*/
}