Студопедия
Главная страница | Контакты | Случайная страница

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

Совмещение в памяти

Читайте также:
  1. A) Постоянно находится в памяти.
  2. Double сохраняется в памяти 15-16 десятичных знаков.
  3. III. Распределение виртуальной памяти
  4. LINUX|| Структура памяти процесса в ОС Linux.
  5. LINUX|| Управление памятью в ОС Linux. Карта памяти
  6. Remembrance Day -День памяти.
  7. Swap MACRO a,b; a,b - параметры макро (ячейки памяти)
  8. Ампутация памяти
  9. Ассемблер. Регистры микропроцессоров 8086-80186. Сегментация памяти в DOS. Создание циклов.
  10. Важнейшая микросхема постоянной памяти — модуль BIOS.

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

<локальная_переменная>: <тип> absolute <нетипизир_параметр>;

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

function func5(var x): Real;
var xxx: LongInt absolute x;
begin
{ здесь с началом любой переменной,
поступившей в параметр х,
... можно обращаться как с LongInt–числом:
при помощи локальной переменной ххх }
end;

Открытые параметры

Открытые параметры — это массивы и строки неопределённой длины. Открытым параметром может стать только параметр–переменная. Возможность работать с открытыми параметрами в подпрограммах появилась в версии Turbo Pascal 7.0.

Открытые массивы

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

В заголовке подпрограммы открытый параметр–массив описывается по следующему шаблону:

var <имя_параметра>: array of <тип_компонентов_массива>

Например, если описано

procedure proc6 (var a: array of Byte);

то аргументом могут стать такие массивы:

a1: array [1.. 100] of Byte;
a2: array [-10.. 10] of Byte;
a3: array [1.. 2, 1.. 3] of Byte;

Компоненты открытого параметра–массива нумеруются, начиная с нуля — этим достигается единообразие обращения к массивам переменной длины.

Если в качестве аргумента поступил многомерный массив, его компоненты «вытягиваются» в одну строку: сначала все компоненты первой строки массива, затем — второй строки и т. д. Например, если массив а3 имеет значения

1 2 34 5 6

то внутри процедуры proc6 параметр а будет иметь уже следующий вид:

1 2 3 4 5 6

причём, компоненты двух массивов будут соотноситься так:

a[0] a[1] a[2] a[3] a[4] a[5]
a3[1, 1] a3[1, 2] a3[1, 3] a3[2, 1] a3[2, 2] a3[2, 3]

Открытые строки

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

var <имя_параметра>: String

Например:

function func6 (var s: String): Byte;

Длина такого параметра будет автоматически скорректирована в соответствии с длиной строки–аргумента.




Дата добавления: 2014-12-19; просмотров: 116 | Поможем написать вашу работу | Нарушение авторских прав




lektsii.net - Лекции.Нет - 2014-2025 год. (0.991 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав