Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы на все билеты по АиАЯз.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
789.5 Кб
Скачать

23. Тип указателя – тип данных для хранения адресов ячеек памяти

Указатель – переменная типа указателя, в качестве своего значения содержит адрес начала размещения некоторых данных в оперативной памяти

Через указатель можно обращаться к данным, адрес начальной ячейки которых хранит указатель.

Доступ к данным через указатель.

Операции с указателями:

& – разадресация – вычисление адреса переменной в памяти.

Операнд операции – любая переменная либо константа

Результат операции – указатель (адрес)

Где применяется: например, при передаче данных в функцию по адресу (пример – функция scanf)

* – разыменование – получение ссылки на данные по их адресу в памяти.

Операнд операции – указатель на некоторый объект (не равный NULL)

Результат операции – ссылка на адресуемый объект

Где применяется: когда требуется получить доступ к данным (для их чтения или изменения), если известен их адрес.

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

24. В C++ существует явная, тесная связь между указателями и массивами.

Связь типа массива с типом указателя выражается в том, что имя массива может всегда восприниматься, как указатель на начальный элемент массива (но не наоборот).

Динамическим называется массив, размер которого может меняться во время исполнения программы. 

Создание динамических массивов осуществляется при выполнении программы. Это дает возможность создания массивов ровно такого размера, какой нужен в данный момент. И, как только надобность в хранении данных массива пропадает, динамический массив можно удалить, освободив занимаемую им память для других нужд. Работа с динамическими массивами в C++ немыслима без указателей. Общая схема работы с динамическим массивом такова.

Последовательность действий с динамическим массивом:

  • Объявление указателя (оператор объявления указателя *)

  • Выделение области памяти из «кучи» (heap) и запись ее адреса в указатель (оператор new)

  • Работа с массивом обычным образом

  • Удаление массива из памяти (оператор delete[])

Н-р: // объявляем указатель на значение типа double

double * pMas;

// создаем массив из n элементов типа double

// и сохраняем его адрес в указателе pMas

pMas = new double[n];

25. Подпрограмма – относительно самостоятельный именованный

фрагмент программы, содержащий описание определённого набора

действий, оформленный особым образом.

Зачем нужны подпрограммы:

  • улучшают структуру программы;

  • сокращают повтор одинакового кода в тексте программы за счет

многократного использования одних и тех же подпрограмм;

  • при объединении подпрограмм в библиотеки (модули)

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

Суть процедурного программирования заключается в следующем. При разработке алгоритмов решения сложных задач применяется метод нисходящего проектирования для решения задачи. Задача поэтапно разбивается на все более простые подзадачи до тех пор, пока эти подзадачи не смогут быть реализованы достаточно простыми алгоритмами. Эти алгоритмы и оформляются в виде подпрограмм.

Детализация задачи на более простые подзадачи позволяет:

· упростить разработку алгоритмов решения этих подзадач, их тестирование и отладку вследствие их относительной простоты;

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

Между программой и подпрограммой есть существенные отличия:

Программа получает исходные данные с помощью операций ввода (с клавиатуры, жесткого диска, по сети и т.д.). Результат работы программы должен быть выведен (на экран, сохранен на жестком диске, передан по сети и т.д.)

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

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