Типы данных. Знакомствоу с простейшими видами пользовательских типов данных. Объединение разнотипных данных под одним именем, страница 3

Это конечно здорово, но никогда не следует забывать, что использование глобальных объектов имеет ряд недостатков, нивелирующих преимущества свободного доступа:

- сложность отладки кода, т.к. при наличии логической ошибки в алгоритме обработки иногда довольно проблематично определить, где были повреждены данные, т.к. доступ к ним дозволен всем;

- функции, работающие с глобальными переменными, невозможно будет перенести в личную библиотеку программиста, и нарушается главнейший принцип роста производительности программиста.

Не помню, останавливался ли я ранее на этом принципе, поэтому, может быть, повторюсь:

Принцип наращивания производительности:

┌─────────────────────────────────────────────┐

│  Сделал один раз - пользуешься всю жизнь !  │

└─────────────────────────────────────────────┘

В самом деле, если вы написали какой-то интересный код и видите, что он вам может ещё когда-нибудь пригодиться, то оформите его в виде функции и разместите его в своей личной библиотеке.  Только не поленитесь сделать к нему достаточно подробное описание и натыкать в него комментарии.

При новой разработке вы подключаете к коду личную библиотеку и просто обращаетесь к этой функции. Блеск - полкода готово потому, что (вы не раз убедитесь в дальнейшем), очень многие части кодов являются однотипными.

Независимо от размера вашей библиотеки, размер исполняемого .exe файла не увеличивается, т.к. транслятор С++, отличающийся умом и сообразительностью, подключает к нему не все, а только те функции, которые вызывались в коде!

Соответственно, каждый новый код вы будете писать с большей скоростью.

Вас будет любить начальство, награждать вас, продвигать.   Правда, это может кончиться тем, что вас задвинут так высоко, что вы и сами станете начальником, и прощай программирование. Но не будем о грустном.

... А глобальные переменные не дают возможности занесения функции в библиотеку. Но и польза от них несомненна, если код специализированный. Короче, всё должно быть в меру. И при использовании глобальных переменных  некоторые части кода можно переделать для библиотеки.

Объявление глобальных переменных демонстрирует ИлК S\s05.cpp.

Другую возможность объявления глобальных переменных демонстрирует

ИлК S\s06.cpp.

Вернёмся к не полностью определённым структурам.

Если у структуры нет имени, то, скорее всего, она предназначена для создания глобальных объектов в единственном месте кода. В этом случае имя структуре без надобности - обращение к объекту производится по его имени, а не по имени структуры.

Объявление глобальных переменных при определении структуры без имени демонстрирует ИлК S\s07.cpp.

Не вопрос объявить локальные переменные по структуре без имени, но для этого определение структуры должно располагаться внутри функции, а это мы уже обсуждали.

Структуры без полей я рекомендую использовать как можно чаще. Это следует делать в момент начала создания структуры. Пишем оператор struct, имя структуры, ставим скобочки {}, точку с запятой и транслируем код. Если трансляция прошла нормально, создаём объекты с пустой структурой и ещё раз транслируем. Если опять всё нормально - заполняем структуру.

Поверьте мне - времени сэкономите громадное количество потому, что, если на каком либо этапе трансляция указала на ошибки, то при небольших добавлениях к коду локализовать их значительно легче, чем при вбивании в код громадного нового куска с, естественно!, громадным же количеством ошибок.

Демонстрировать тут нечего ИлК - нет.

Всё блеск - жми Esc!

*                *                *

┌─────────────────────────────┐            t0000125

│  Доступ к членам структуры  │

└─────────────────────────────┘

После объявления структурных переменных, т.е. создания объектов, можно приступать к работе с объектами.

Для работы с объектом необходимо иметь доступ к полям объекта, т.е. доступ к его внутренним переменным, т.е. членам объекта.

Доступ к членам объекта можно осуществить различными способами:

- непосредственно через имя объекта . . . . . .         ‑t0000126‑

- через указатели                   . . . . . .                        ‑t0000127‑

- с использованием специальных функций.

Использование функций для доступа оставим до времён объектно-ориентированного программирования.

Оба рассмотренных способа доступа к членам структуры широко используются в кодах программ.