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

21. Передача параметров в подпрог.

Существует несколько способов передачи параметров в подпрограмму.Передача параметров по значению:формальному параметру(ФП) присваивается значение фактического параметра. ФП будет содержать копию значения, имеющегося в фактическом, и никакое воздействие, производимое внутри подпрограммы на ФП, не отражается на параметрах фактических. Пример: если в качестве фактического параметра будет использована переменная, и внутри подпрограммы значение соответствующего ФП будет изменено, то фактический параметр останется без изменений.int func1(int x) { x=x+1; return x; } Передача параметров по ссылке. В ФП может быть помещён сам фактический параметр. При этом любое изменение ФП в подпрограмме отразится на фактическом параметре-оба параметра во время вызова подпрограммы суть одно и то же.void func2(int &x) { x=x+1; }Передача параметров по имени. В ФП может быть помещено произвольное выражение. При этом вычисление этого выражения произойдёт внутри подпрограммы в тот момент, когда потребуется его значение. Параметры, передаваемые по имени, дают возможность писать довольно универсальные подпрограммы. Если язык содержит понятие ссылки, то можно обойтись и без передачи параметра по ссылке, но эта возможность удобна, так как позволяет работать с формальным параметром-ссылкой без разыменования, а также повышает надёжность и безопасность программы.На параметры, передаваемые по ссылке, накладываются естественные ограничения: фактический параметр, подставляемый на место такого параметра при вызове, обязан быть переменной, а в языках со строгой типизацией — ещё и иметь в точности такой же тип данных.

22.

23.Элементы программы требуемые память во время выполнения

В боль­шинстве языков имеется возможность динамически выделять и освобож­дать память для объектов. Для таких объектов память выделяется из кучи. Во многих реализациях стек начи­нается с одного конца памяти компьютера, а куча с другого. Если стек и куча когда-либо встречаются, то программе не хватает памяти и она останавливается.

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

С точки зрения программиста, управление памятью — это обычно выделение областей памяти для хранения данных и кода оттранслированных программ. Управление памятью во время выполнения включает, помимо этих, много других областей, например, точки возврата из подпрограмм.

Сегменты кода для оттранслированных программ пользователя. В любой системе основной блок памяти отводится для хранения сегментов кода, пред­ставляющих оттранслированную форму программ пользователя,

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

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

Точки возврата для подпрограмм. Внутренне сгенерированная ин­формация об управлении последовательностью действий.

Среды ссылок..

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

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