Вниз
Скачать: CL | DM;

Динамические массивы   Найти похожие ветки 

← →
Ник ©   (2002-12-03 14:35) [0]

Доброе время суток. Интересует следующее:

type

Ar2d = array of array of double;
Ar1D = array of double;

var
Form1: TForm1;
x : Ar2d;
y : Ar1d;
p1, p2 : pointer;
p3, p4 : ^double;

procedure TForm1.Button1Click(Sender: TObject);
begin
SetLength(x, 100, 100);
SetLength(y, 100);
p1 := x;
p2 := y;
p3 := @x[0,0];
p4 := @y[0];
end;


end.

Адреса p2=p4 (в случае одномерного массива), а p2<>p4 (для многомерного массива)
С чем это связано?


← →
MBo ©   (2002-12-03 14:50) [1]

C организацией многомерных дин. массивов, естественно
p :array[1..5] of pointer;
i:integer;
begin
SetLength(x, 100, 100);
SetLength(y, 100);
p[1] := x;
p[2] := @x[0];
p[3] := @x[0,0];
p[4] := y;
p[5] := @y[0];
for i:=1 to 5 do
Memo1.Lines.Add(inttohex(cardinal(p[i]),8));

вторая строка даст тот же адрес, что и первая, поскольку элементы первого уровня двумерного массива X, располагающиеся по адресу самого X, есть сами по себе динамические одномерные массивы, или указатели на сам данные. Заметь, что при
SetLength(x,1,что нибудь)
все первые адреса совпадут



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.01 c
14-36398
Владик_1
2002-11-18 17:22
2002.12.12
Windows 3 инсталяция Где?


3-36068
Pontic
2002-11-22 17:26
2002.12.12
Как установить Interbase в локальной сети???


14-36354
andy_ar
2002-11-20 11:49
2002.12.12
Поздравьте меня!


1-36142
Jackass
2002-12-03 16:25
2002.12.12
Как заставить форму не выходить за пределы родительской формы?


1-36089
Vcoder
2002-12-01 14:49
2002.12.12
Сохранение небазовых типов в .ini файле




   Наверх