Форум программистов, компьютерный форум, киберфорум
Наши страницы
Turbo Pascal
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
Mazilo
36 / 36 / 72
Регистрация: 31.10.2014
Сообщений: 206
1

Как передать ссылку на массив в процедуру

17.03.2015, 23:13. Просмотров 744. Ответов 5
Метки нет (Все метки)

Объявляю динамическую структуру данных.

Pascal
1
2
3
type mas=array [1..2,1..2] of byte;
pmas=^mas;
var a:pmas;
Вопрос следующий, как мне передать ссылку на этот массив в процедуру? И как мне обращаться к этому массиву в процедуре?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.03.2015, 23:13
Ответы с готовыми решениями:

Как передать массив в процедуру?
:confused: нужно передать в проседуру или функцию массив и поменять там...

Можно ли передать массив класса в процедуру
Можно ли передать в процедуру массив, если массивов несколько и их тип это...

Как в процедуру передать указатель?
как в процедуру передать указатель? пример на c: void request(int *zcount,...

Как передать число, найденное в головной программе, в процедуру?
Ребят, у меня небольшой вопрос, надеюсь вы сможете мне помочь с ним . Как можно...

Как передать значения массива в подпрограммму процедуру и вывести элементы в процедуре
никак не получается Добавлено через 32 минуты чё никто не знает?

5
Constantin Cat
1974 / 1062 / 367
Регистрация: 28.02.2015
Сообщений: 2,338
Завершенные тесты: 1
18.03.2015, 00:34 2
Цитата Сообщение от Mazilo Посмотреть сообщение
как мне передать ссылку на этот массив в процедуру
Как и любую другую переменную:
Pascal
1
procedure N(z:pmas);
вызов:
Pascal
1
N(a);
только не забывайте, что у Вас до вызова самой процедуры должна быть выделена под этот массив память, любым способом: (статически)VAR, (динамически)NEW или GetMem, и a : pmas должна ссылатся на этот участок памяти.
Возможно в самой процедуре будет выделятся память, по этому незабудьте префиск var в описании процедуры.

Добавлено через 2 минуты
Цитата Сообщение от Mazilo Посмотреть сообщение
как мне обращаться к этому массиву в процедуре
Так же как и вне процедуры, только у Вас будет перменная принадлежащая процедуре(z).
0
Mazilo
36 / 36 / 72
Регистрация: 31.10.2014
Сообщений: 206
18.03.2015, 15:04  [ТС] 3
Constantin Cat, хорошо, а как мне передать массив с помощью параметра безтипового указателя?

Добавлено через 1 час 24 минуты
Актуально.
1
Constantin Cat
1974 / 1062 / 367
Регистрация: 28.02.2015
Сообщений: 2,338
Завершенные тесты: 1
19.03.2015, 10:27 4
Mazilo
Приблизительно так:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
type
  mas=array[1..2,1..2]of byte;
  pmas=^mas;
var
  a:mas;
  b:pointer;
  c:pmas;
procedure d(a:pointer);
  var
    i,j:integer;
    b:^mas;
  begin
    b:=a;
    for i:=1 to 2 do
      begin
        for j:=1 to 2 do
          write(b^[i,j]:2);
        writeln;
      end;
  end;
begin
  a[1,1]:=8;
  a[1,2]:=7;
  a[2,1]:=6;
  a[2,2]:=9;
  c^:=a;
  b:=c;
  d(b);
  readln;
end.
0
Mazilo
36 / 36 / 72
Регистрация: 31.10.2014
Сообщений: 206
19.03.2015, 20:58  [ТС] 5
Constantin Cat, а перед этим всем делом New, а затем Dispose, юзать нужно?
0
Constantin Cat
1974 / 1062 / 367
Регистрация: 28.02.2015
Сообщений: 2,338
Завершенные тесты: 1
19.03.2015, 22:28 6
Нет, сам массив создан статически.
Цитата Сообщение от Mazilo Посмотреть сообщение
New, а затем Dispose,
В этом варианте нужно:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
type
  mas=array[1..2,1..2]of byte;
  pmas=^mas;
var
  a:mas;
  b:pointer;
  c:pmas;
procedure d(a:pointer);
  var
    i,j:integer;
    b:pmas;
  begin
    b:=a;
    for i:=1 to 2 do
      begin
        for j:=1 to 2 do
          write(b^[i,j]:2);
        writeln;
      end;
  end;
begin
  new(c);
  c^[1,1]:=8;
  c^[1,2]:=7;
  c^[2,1]:=6;
  c^[2,2]:=9;
  b:=c;
  d(b);
  dispose(c);
  readln;
end.
0
19.03.2015, 22:28
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.03.2015, 22:28

Как загнать массив записей в процедуру?
Как загнать массив записей в процедуру? Препод задал задачу по добавлению и...

Как передать процедуре массив контсанту
Вот у меня есть массив константа Const n=5; c:arrayof integer=((1,3,4,5,6),...

Двумерный массив. Как написать его через процедуру? )
Uses Crt; var a,b: array of real; i,j,x,y:integer;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru