Оберон-клуб «ВЄДАsoft»

Твердыня модульных языков
Текущее время: 16 июн 2025, 08:02

Часовой пояс: UTC + 2 часа




Начать новую тему Ответить на тему  [ Сообщений: 2 ] 
Автор Сообщение
 Заголовок сообщения: Возвращение массива из процедуры
СообщениеДобавлено: 07 дек 2017, 15:28 
Не в сети

Сообщения: 116
Откуда: Каменск-Уральский
Допустим мне надо вернуть из процедуры массив как параметр. Я сочинил следующее:
Код: "OBERON"
  1. TYPE
  2. pow = POINTER TO RECORD
  3. a, b: INTEGER
  4. END;
  5.  
  6. pow2 = ARRAY OF pow;
  7.  
  8. pow3 = POINTER TO pow2;


Далее такой заголовок процедуры
Код: "OBERON"
  1. PROCEDURE a(): pow3;
  2. VAR z: pow3;


Подскажите как объявить массив в z и как вообще этой переменной пользоваться.


Вернуться к началу
 Профиль  
Ответить с цитатой  
СообщениеДобавлено: 07 дек 2017, 23:05 
Не в сети
Аватара пользователя

Сообщения: 1019
Откуда: Днепропетровская обл.
Тип pow3 — это указатель на динамический массив, элементы которого — указатели на запись. Нужно всё делать по очереди. Сначала выделить память для самого массива, указав количество его элементов (указателей на запись). Потом пробежаться по элементам массива, выделяя непосредственно память под каждую запись.
Код: "OBERON"
  1. PROCEDURE a(): pow3;
  2. VAR z: pow3; i: INTEGER;
  3. BEGIN
  4. NEW(z, 100); (* Объявляем массив длиной в 100 элементов *)
  5. FOR i := 0 TO 99 DO (* Перебираем все его элементы в цикле *)
  6. NEW(z[i]); (* Выделяем память под элемент массива (запись) *)
  7. z[i].a := 1; z[i].b := 2; (* Присваиваем этой записи значение её полей *)
  8. END;
  9. RETURN z
  10. END a;

Может стоит упростить? Например, сделать элементы массива (записи) статическими.


Вернуться к началу
 Профиль  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 2 ] 

Часовой пояс: UTC + 2 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
© VEDAsoft Oberon Club