Студопедия

Главная страница Случайная страница

Разделы сайта

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






  • Сервис онлайн-записи на собственном Telegram-боте
    Тот, кто работает в сфере услуг, знает — без ведения записи клиентов никуда. Мало того, что нужно видеть свое расписание, но и напоминать клиентам о визитах тоже. Нашли самый бюджетный и оптимальный вариант: сервис VisitTime.
    Для новых пользователей первый месяц бесплатно.
    Чат-бот для мастеров и специалистов, который упрощает ведение записей:
    Сам записывает клиентов и напоминает им о визите;
    Персонализирует скидки, чаевые, кэшбэк и предоплаты;
    Увеличивает доходимость и помогает больше зарабатывать;
    Начать пользоваться сервисом
  • Доступ к полям вложенных структур






    Если одна структура вложена в другую, то для доступа к полям внутренней структуры необходимо дважды применить операцию точки (.):

    dining.length.feet = 13;

    В этом операторе dining — имя структурной переменной, как и раньше; Length — имя поля внешней структуры Room; feet — имя поля внутренней струк­туры Distance. Таким образом, данный оператор берет поле feet поля Length пере­менной dining и присваивает этому полю значение, равное 13.

    ОПРЕДЕЛЕНИЕ

    · Объединения C++ очень похожи на структуры, за исключением того, как C++ хранит их в памяти; кроме того, объединение может хранить значение только для одного элемента в каждый момент времени.

    · Объединение представляет собой структуру данных, подобную структуре C++, и состоит из частей, называемых элементами.

    · Объединение определяет шаблон, с помощью которого программы далее объявляют переменные.

    · Для обращения к определенному элементу объединения ваши программы используют оператор C++ точку.

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

    · Анонимное объединение представляет собой объединение, у которого нет имени (тэга).

     

    Внутри ваших программ объединения C++ очень похожи на структуры. Например, следующая структура определяет объединение с именем distance, содержащее два элемента:

    union distance

    {
    int miles;
    long meters;
    };

    union tank{ struct { int x, y; int fuel; }; int t[3]; };

    Во-первых мы заменили struct на union (union - объединение). Внутри объединения расположена безымянная структура в которой определены все те переменные, которые были в структуре tank.

    После безымянной структуры определён массив целых чисел из трёх элементов.

    Теперь создадим переменную и обратимся к её полям:

    tank t34; t34.x = 5; t34.y = 1; t34.fuel = 20; cout < < t34.t[0] < < " \n"; cout < < t34.t[1] < < " \n"; cout < < t34.t[2] < < " \n";

    На экран будет выведено:

    5120

    Дело в том, что x и t[0] - разные имена одного и того же участка памяти

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

    union tank{ int x; int y; int fuel; int t[3]; };

    Ничего хорошего из этого не выйдет. Здесь x, y, fuel и t[0] - имена одного участка памяти.

    В будущем мы будем использовать объединения следующим образом:

    struct tank{ union { struct { int x, y; int fuel; }; int t[3]; }; };

    Но вместо слово struct в первой строке будет стоять class. Сейчас вот этот вариант (struct tank) и предыдущий (union tank) работают одинаково.

    Применение объединений очень сильно ограничено. Мы их рассмотрели, так как они особенно часто встречаются в математических библиотеках.

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

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

     

    ПРЕПРОЦЕССОРНЫЕ СРЕДСТВА

    Препроцессорная обработка (макрообработка) -- это преобразование текста путем замены препроцессорных переменных их значениями и выполнения препроцессорных операторов (директив препроцессора).

    В общем случае препроцессорные средства включают:

    - определение препроцессорных переменных и присвоенных им значений;

    - средства управления просмотром преобразуемого текста;

    - правила подстановки значений макропеременных.

    ПРЕПРОЦЕССОРНЫЕ СРЕДСТВА

    Препроцессор обычно обеспечивает возможность включения в программу исходных текстов из других файлов, в Си/Си++ это выполняется по директиве

    # include имя файла

    Если включаемый файл находится в одном из оглавлений, указываемых в установках интегрированной среды в пункте options-directory-include, где можно указать несколько путей, разделяя их точкой с запятой, имя файла заключается в уголковые кавычки, например

    # include < iostream.h>

    в остальных случаях указывается полный путь к включаемому файлу в кавычках:

    # include “c: \myinclud\includ1.h”

    При включении файла на место директивы #include вставляется текст из этого файла, а последующие строки исходного файла сдвигаются вниз, после чего вставленный текст сканируется препроцессором.

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






    © 2023 :: MyLektsii.ru :: Мои Лекции
    Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
    Копирование текстов разрешено только с указанием индексируемой ссылки на источник.