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

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

Читайте также:
  1. Адресация памяти в защищенном режиме работы процессора
  2. Архитектура памяти.
  3. В оперативной памяти находятся 10 переменных, содержащих числа, - S1, S2, ... S10. Программирование в среде Ассемблера. Сосчитать их произведение.
  4. В увековечивании памяти Юрия Тумаркина сделан еще один важный шаг
  5. Верхний блок памяти
  6. Виды памяти
  7. Вопрос 19 - Технологические принципы проектирования техпроцессов: совмещение баз, смены баз.

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

<локальная_переменная>: <тип> 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;

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


Дата добавления: 2015-07-07; просмотров: 97 | Нарушение авторских прав


Читайте в этой же книге: Задача сортировки | Сортировка бинарными вставками | Алгоритм УлШелл | Реализация алгоритма УлШелл | Символы и строки | Представление множеств битовыми массивами | Описание файлов | Считывание из файла | Пробельные символы | Изменение реакции на ошибку |
<== предыдущая страница | следующая страница ==>
Вложенные операторы with| Процедурный тип данных

mybiblioteka.su - 2015-2021 год. (0.015 сек.)