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

Указали на динамические массивы   Найти похожие ветки 

 
dimon_programmer   (2004-03-22 13:45) [0]

Есть динамический массив
var
arr:array of integer;
parr:PIntegerArray;
Вопрос1: как заставить parr указывать на arr :parr:=@arr???
то есть как сделать так, чтобы код вроде

setlength(arr,10);
parr:=@arr;
ar[5]:=X;//допустим  Х=13
y:=parr^[5];//чтобы Y оказался 13, а не 0
Вопрос2: есть два указателя PintegerArray, и два интовых дин. массива,сделать чтобы указатели стали указывать на "соседние " массивы (поменялись массивами)


 
MBo ©   (2004-03-22 13:50) [1]

parr:=@arr[0];
Но нафига?


 
Ega23 ©   (2004-03-22 13:52) [2]

Вопрос2: есть два указателя PintegerArray, и два интовых дин. массива,сделать чтобы указатели стали указывать на "соседние " массивы (поменялись массивами)

Через 3-й указатель.


 
Serginio666   (2004-03-22 14:42) [3]

P:Pointer;
P1,p2:array of Integer;
Begin

--------
p:=P1;
Pointer(P1):=Pointer(p2);
Pointer(p2):=p;

//=======================
Этим самы мы не даем компилятору корректировать количество ссылок на массив, тем самым ускоряя обмен и сберегаемся от уничтожения массива при достижении счетчика ссылок 0.


 
REA ©   (2004-03-22 15:47) [4]

>ускоряя обмен и сберегаемся от уничтожения массива при достижении счетчика ссылок 0

Че то мне сдается, что не сберегаемся. Массив как ему и положено будет уничтожен есть на него Pointer или нет.


 
Serginio666   (2004-03-22 16:38) [5]

Уничтожаться он будет при таком варианте

P:Pointer;
P1,p2:array of Integer;
Begin

--------
p:=P1;
P1:=p2; // В данном случае будет уничтожен P1
p2:=p;
и в p2 получим ...


 
REA ©   (2004-03-22 16:42) [6]

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


 
Serginio666   (2004-03-22 16:49) [7]

В варианте  [3] мы просто не даем компилятору производить никаких действий со счетчиком ссылок массива, только и всего.
И не надо не зачем следить. Ну а если очень хочется, то помоему со смещения -8 и находится счетчик ссылок, и если надо то можно его и корректировать.



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

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



Память: 0.46 MB
Время: 0.035 c
14-1079359521
Piter
2004-03-15 17:05
2004.04.11
Что-то форум тормозит


14-1079347888
Kerk
2004-03-15 13:51
2004.04.11
Нематериальные ценности создают инфляцию.


14-1079296999
Gero
2004-03-14 23:43
2004.04.11
Написание Shell


14-1079679358
Парикмахер
2004-03-19 09:55
2004.04.11
Всплывающее меню контекстной помощи Windows


14-1081963920
RealRascal
2004-04-14 21:32
2004.04.11
Замена блокноту




   Наверх