Ответ 1
Хотя, этот вопрос уже ответил, я отправляю свой ответ, потому что я думаю, что у ОП есть сомнения в объявлении структуры и определении переменной типа структуры.
Если вы не знаете, что такое структура на C, ознакомьтесь с 1) ниже.
Ключевое слово struct представляет объявление структуры, которое представляет собой список объявлений, заключенных в фигурные скобки. Необязательное имя, называемое тегом структуры, может следовать за словом struct. Следовательно, это объявление структуры:
struct card {
char *face;
char *suit;
};
здесь face
и suit
являются переменными-членами. Обратите внимание, что декларация структуры не резервирует память; он просто описывает шаблон структуры.
Объявление структуры определяет тип. За правой скобкой, которая завершает список членов, может следовать список переменных. Итак, в вашем случае:
....
} aCard, deck[52], *cardPtr;
aCard
, deck[52]
и *cardPtr
являются переменными типа struct card
.
Поскольку ваша структура декларация помечается имя card
, тег card
может быть использована в дальнейшем в определениях экземпляров структуры. например, учитывая объявление структурной card
выше,
struct card someCard;
определяет переменную someCard
которая является структурой типа struct card
.
Кроме того, вы можете typedef
объявление структуры и использовать его для определения переменных своего типа.
1)
По определению - структура представляет собой совокупность одной или нескольких переменных, возможно, разных типов, сгруппированных вместе под одним именем.
Согласно стандарту С# 6.2.5 [Типы]:
Тип структуры описывает последовательно выделенный непустой набор объектов-членов (и, в определенных случаях, неполный массив), каждый из которых имеет необязательно указанное имя и, возможно, отдельный тип.
.....
...
Арифметические типы и типы указателей в совокупности называются скалярными типами. Типы массивов и структуры совместно называются совокупными типами.46)