KNOW INTUIT, Лекция, Управляващи оператори

Енуми

Когато пишете програми, често е необходимо да се дефинират няколко именувани константи, които изискват всички те да имат различни стойности. За да направите това, е удобно да използвате изброен тип данни. формат:

Името на типа се посочва, ако програмата трябва да дефинира променливи от този тип. Компилаторът гарантира, че тези променливи приемат само стойности от списъка с константи.

Константите трябва да са цели числа и могат да бъдат инициализирани по обичайния начин. При липса на инициализатор, първата константа се настройва на нула и на всяка следваща се присвоява стойност с 1 по-голяма от предишната:

На константите ERR_READ, ERR_WRITE, ERR_CONVERT се присвояват съответно стойности 0, 1 и 2.

Конструкции

За разлика от масива, чиито елементи са от един и същи тип, структурата може да съдържа елементи от различни типове. В C++ структурата е вид клас и има всички свои свойства, но в много случаи е достатъчно да се използват структури, както са дефинирани в C:

Елементите на структура се наричат ​​полета на структураи могат да бъдат от всякакъв тип, с изключение на типа на същата структура, но могат да бъдат указатели към нея.

Ако няма име на тип, трябва да се предостави списък с дескриптори на променливи, указатели или масиви. В този случай описанието на структурата служи като дефиниция на елементите на списъка:

Ако списъкът липсва, декларацията на структурата дефинира нов тип, чието име може да се използва по-късно заедно със стандартните типове, например:

Заинициализиране на структура, стойностите на нейните елементи са изброени във фигурни скоби в реда, в който са описани:

Структурата може да бъде предадена на функция ивръщане като стойност на функция. Други операции върху структури могат да бъдат дефинирани от потребителя.

Полетата на структуратасе осъществяват чрез операции за избор. (точка) при препратка към поле чрез име на структура и -> при достъп чрез указател, например:

Битови полета

Битовите полета са специален вид структурни полета. Те се използват за плътно опаковане на данни, като квадратчета за отметка да/не. Когато се описва битово поле, дължината на полето в битове (положителна цяло число) се посочва след името, разделено с двоеточие:

Полето е достъпно по име. Адресът на полето не може да бъде извлечен.

Синдикати

Дължината на обединението е равна на най-голямата от дължините на неговите полета. Обединената променлива съдържа само една стойност в даден момент и е отговорност на програмиста да я използва правилно.

Обединенията се използват за пестене на памет, както и за различни интерпретации на едно и също битово представяне:

В сравнение със структурите синдикатите имат някои ограничения:

  • обединение може да се инициализира само със стойността на първия му елемент;
  • обединението не може да съдържа битови полета;
  • обединението не може да съдържа виртуални методи, конструктори, деструктори и оператор за присвояване;
  • обединението не може да бъде в класова йерархия.

Преименуване на типове (typedef)

За да направите програмата по-ясна, можете да дадете ново име на тип с ключовата дума typedef:

Може да липсват размери. Примери:

Име, въведено по този начин, може да се използва по същия начин като имената на стандартен тип: