Помощничек
Главная | Обратная связь


Археология
Архитектура
Астрономия
Аудит
Биология
Ботаника
Бухгалтерский учёт
Войное дело
Генетика
География
Геология
Дизайн
Искусство
История
Кино
Кулинария
Культура
Литература
Математика
Медицина
Металлургия
Мифология
Музыка
Психология
Религия
Спорт
Строительство
Техника
Транспорт
Туризм
Усадьба
Физика
Фотография
Химия
Экология
Электричество
Электроника
Энергетика

Зауваження до програми. Щодо програми в лістингу 9 слід відзначити один важливий аспект - розташування



Щодо програми в лістингу 9 слід відзначити один важливий аспект - розташування оголошення структури. Для structur.срр існує два варіанти. Оголошення можна розмістити всередині функції main(). Другий варіант, використаний тут, полягає в тому, щоб розташувати оголошення за межами функції main(). Коли оголошення зустрічається поза функції, воно називається зовнішнім оголошенням. Для конкретної програми немає практичної різниці між цими двома варіантами. Але для програм, що складаються з двох і більше функцій, різниця може виявитися істотною. Зовнішнє оголошення може бути використано всіма функціями, які слідують за нею, в той час як внутрішнє оголошення може застосовуватися тільки тією функцією, в якій це оголошення знаходиться. Найчастіше доведеться застосовувати зовнішнє оголошення, щоб всі функції могли працювати зі структурами цього типу (мал. 6).

Мал. 6. Локальні і зовнішні оголошення структур

Змінні також можуть бути визначені як внутрішні чи зовнішні, причому зовнішні змінні доступні всім функціям. У C++ не заохочується використання зовнішніх змінних, але застосування зовнішніх оголошень структур навпаки. До того ж часто є сенс оголошувати зовнішніми і символічні константи.

Тепер зверніть увагу на процедуру ініціалізації:

Як і у випадку масивів, тут використовується список значень, розділених комами, всередині пари фігурних дужок. У прикладі програми кожне значення знаходиться в окремому рядку, але їх все можна було б помістити в один рядок. Головне - не забути розділяти їх комами:

Кожен член структури можна ініціалізувати даними відповідного виду. Наприклад, член структури name - це символьний масив, тому його можна ініціалізувати рядком. Кожен член структури трактується як змінна цього типу. Тобто pal.price - змінна типу double, a pal.name - масив char. І коли програма використовує cout, щоб відобразити pal.name, вона відображає цей член як рядок. До речі, оскільки pal.name - символьний масив, для доступу до його окремих символів можна використовувати індекси. Наприклад, pal.name[0] містить символ А. Однак pal[0] не має сенсу, тому що pal є структурою, а не масивом.

 

Ініціалізація структур в С++ 11

Як і у випадку масивів, C++ 11 розширює можливості спискової ініціалізації. Знак = є необов'язковим:

Порожні фігурні дужки призводять до встановлення індивідуальних членів в 0. Наприклад, наступне оголошення забезпечує встановлення в 0 членів mayor.volume і mayor.price, а також всіх байтів в mayor.name:

І, нарешті, звуження не допускається.

 




Поиск по сайту:

©2015-2020 studopedya.ru Все права принадлежат авторам размещенных материалов.