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

Array Pointers

Использование модуля | Внутренние процедуры | Связь с хозяином (Host) - глобальные данные | Объекты допустимого образа | Процедуры в качестве параметров | Родовые подпрограммы | Вещественные - форма с фиксированной точкой | Ввод-вывод без продвижения | Оператор OPEN | Статус распределяемых массивов |


Читайте также:
  1. Array creation expressions
  2. Array initializers
  3. Creation and using one-dimensional and multi-dimensional arrays in the programming language Java.
  4. Declaring Pointers
  5. Jagged Arrays
  6. Parameter arrays

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

REAL, TARGET:: grid(10,10) REAL, POINTER:: centre(:,:), row(:)... centre => grid(4:7,4:7)

row => grid(9,:)

Указатель массива может быть связан со всем массивом или выбранной частью. Размер и протяженность массива можно изменить так, как требуется даже с рапределяемыми массивами. Например:

centre => grid(5:5,5:6)! внутренние 4 элемента от прежней середины

Заметим, что указатель массива не нужно возвращать прежде чем переопределены его протяженность или границы.

INTEGER, TARGET:: list(-5:5) INTEGER, POINTER:: pt(:) INTEGER, DIMENSION(3):: v = (/-1,4,-2/)... pt => list! указывает границы для pt pt => list(:)! указывает границы для pt pt => list(1:5:2)

pt => list(v)! неверно

Протяженность (или границы) секции массива определяются типом присваивания, использованным для присваивания указателя. Когда указатель массива определяется массивом, соответствующий указатель массива принимает вид его расширения к массиву-адресату как это было выше с pt => list, оба имеют границы -5:5. Если указатель массива связывается с секцией массива (даже если секция равна всему массив у), его меньшая граница в каждом измерении равна 1 - как с pt => list(:) выше, протяженость pt равна 1:11, тогда как протяженность для list равна -5:5. Так pt(1) привязан к list(-5), pt(2) к list(-4), и т.д.

Возможно связать указатель массива с секцией массива, определенной с помощью тройки выписки. Невозможно связать один с секцией массива, определенной выпиской вектора, выше v. Присваивание уазателя pt => list(1:5:2) верно с pt(1), связанным с list(1), pt(2), связанным с list(3) и pt(3)), связанным с list(5).

Я


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


<== предыдущая страница | следующая страница ==>
Присваивание указателя| В разделе приведены примеры и результаты их запуска на Alfa

mybiblioteka.su - 2015-2024 год. (0.006 сек.)