Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Відповіді на питання по мові С++по лекціям.docx
Скачиваний:
2
Добавлен:
01.05.2025
Размер:
265 Кб
Скачать
☆
  1. Що робить оператор enum?

Засіб С++ перерахувань enum є альтернативним способом const для створення символьних констант. Он також дозволяє визначати нові типи, але дуже обмежено. Розглянемо такий оператор:

enum spectrum {red, orange, yellow, green, blue, violet, indigo, ultraviolet};

Цей оператор робить дві речі:

  • Об’являє ім’я нового типу – spectrum; spectrum об’явлений як перерахування, також як змінна struct називається структурою.

  • Установлює red, orange, yellow, green, blue, violet, indigo, ultraviolet, як символьні константи для значень цілих чисел 0=7. Ці константи мають назву нумератор.

  1. Як робиться перерахування значень?

Для перерахувань визначена тільки операція присвоєння. Арифметичні операції не передбачені. Наприклад:

band = green; //вірно

band = green + red; //не вірно

Вірними значеннями перерахувань є лише ті, що названі в об’яві. Однак С++ дозволяє розширити список допустимих значень за рахунок приведення типів. Кожне перерахування має діапазон, і, використовуючи приведення типу, можна присвоїти будь-яке ціле значення у межах цього діапазону, навіть якщо дане значення не перераховано ні в одному із перерахувань. Припустимо, що bits та myflag визначені таким чином:

enum bits {ont =1, two =2, four =4, eight = 8};

У такому випадку наступний оператор є правильним:

myflag = bits(6); //тому що 6 лежить в межах діапазону

Тут 6 не є значенням ні одного із перерахувань, однак лежить у межах даного визначеного перерахування. Обчислення верхньої межі діапазону робиться наступним чином: береться максимальне число у межах діапазону і визначається ступінь двійки яка перебільшує це максимальне значення і з нього віднімається 1. Наприклад: максимальне значення 175, а ступінь двійки, що перевищує 175, є 256, то діапазон присвоює своє максимальне значення 255. Обчислення нижньої межі діапазону робиться наступним чином: коли воно рівно 0 або більше, то вибирається 0, а коли значення від’ємно, то береться той ж підхід, що і до верхньої межі, але з мінусом. Наприклад , коли мінімальний нумератор має значення -6, то наступна ступінь двійки буде -8, і нижня межа стає рівною -7. Нумератор може використовувати від 1 байта до 4 байт для типу long.

  1. Показники та вільне сховище

Оператор об’яви вказує тип та символьне ім’я змінної та масиву. Воно також резервує пам’ять у комп’ютері для цієї змінної або масиву і відстежує її місцезнаходження. Змінна має логічний адрес (це її ім’я), а фізичний адрес від користувача схований..

Розглянемо, як з’ясувати фізичний адрес замість логічного за допомого показників. Для отримання адреси звичайної змінної застосовують символ & до змінної. Наприклад, коли home – змінна, то &home – її адрес.

  1. Показник та операція разименовання.

Для відображення адреси використовується 16-річна нотація. Нова стратегія зберігання даних, як іменованої (логічної) величини, так і довільної (фізичної) величини. Для цього передбачений спеціальний тип змінної – показник, який може зберігати адрес як значення. Ім’я показника вказує місцезнаходження. Застосовуючи операцію *, яку називають операцією разименованія, можна отримати значення, яке зберігатися в указаному адресному місці.

Припустимо, що manly – це показник. В такому випадку manly вказує адресу, *manly – значення, яке знаходиться по цьому адресу. Комбінація *manly стає еквівалентом звичайної змінної типу int.

ЛЕКЦІЯ 9