Иногда есть необходимость сгруппировать некоторые данные, допустим вы делайте программу, которая подбирает лучшую девушку 2011.
Конечно можно использовать ряд массивов, например
char NameGirl[10]={"Sveta","Anja",....};int AgeGirl[10]={21,23,...}
и т.д.Но лучше использовать структуры.
Структура struct это объеденение нескольких переменных разных или однотипных в одну пачку.
Синтаксис
struct уникальное_название_вашей_структуры
{
переменные, например int age;
};
Но я не рекомендую использовать такой синтаксис, более простой способ это использовать typedef, описание структуры будет в этом случае, таким:
typedef struct
{
переменные, например int age;
} уникальное_название_tp
В чем разница? В объявлении (в функциях и как переменные),
в первом случае вы должны будете писать
struct уникальное_название_вашей_структуры имя_переменной
, во-втором случае всего
уникальное_название_tp имя_переменной;
Допустим:
typedef struct
{
char name[30];
short age;
char virgin;
char like_drink;
char emo;
} TS_Girl;
В Си, нет булевых типов переменных (они есть только в C++ - bool), потому используем char, но для кода на самом деле все равно, булевая переменная из C++, занимает в памяти также 1 байт, а не 1 бит - как кажется.
Теперь TS_Girl - это, что-то типа переменной и можно сделать так:
TS_Girl girl_from_work[10];
Тут мы объявили массив структур, обращение к структуре будет выглядеть так:
if (girl_from_work[0].age > 30) continue;
Обращение к членам структуры - через точку
TS_Girl wounder_girl;
if (wounder_girl.emo != 0) printf("Не повезло!\n");
В чем прелесть структур - что (кроме группировки) - что данные хранятся в одном месте и последовательно друг-за другом.
Системная функция sizeof вернет размер струтуры, в моем случае sizeof(TS_Girl) вернет 35.
Можно эти данные копировать/записовать как область памяти, например
write(file,(char*)&girl_from_work[i],sizeof(TS_Gril));
В некоторых (поздних)версиях С, в структурах появились функции - но это язычество, сын мой, избегай этого!
Есть классы (в C++), а есть структуры и не стоит мешать мух с котлетами.
Подпишись на обновления блога - будь в курсе
Комментариев нет:
Отправить комментарий