Вниз
Скачать: 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.029 c
1-1079958830
RodAM
2004-03-22 15:33
2004.04.11
Переход D5 - D7


8-1070635022
Tracker
2003-12-05 17:37
2004.04.11
Запись музыки


14-1079445716
Kerk
2004-03-16 17:01
2004.04.11
Посоветуйте бесплатный хостинг с perl и без банеров.


7-1075369245
Stexen
2004-01-29 12:40
2004.04.11
Клавиатура


8-1070898627
Denis555
2003-12-08 18:50
2004.04.11
недостаточно памяти для выполнения операции




   Наверх