Вам нужно сделать объявление структурной переменной следующим образом:
struct details book1[10];
Это потому, что details
не typedef
ed, и поэтому вы не можете использовать его как пользовательский тип, и поэтому вам нужно использовать ключевое слово struct
.
Обратите внимание, что в приведенном выше определении my_str
является переменной (выделенным объектом) типа struct details
Вы также можете сделать:
typedef struct details
{
char name[20];
int year;
float price;
} my_str;
А затем сделайте:
my_str book1[10];
Это то же самое, что и выше. Обратите внимание, что my_str
- это не переменная (объект), а имя типа, которое вы определили с помощью ключевого слова typedef
. После этого компилятор узнает, что вы используете my_str
в качестве нового пользовательского имени типа для созданного вами типа данных составной структуры, и поэтому вы можете использовать my_str
напрямую вместо struct details