Форум: "Начинающим";
Текущий архив: 2006.11.19;
Скачать: [xml.tar.bz2];
ВнизPointer Найти похожие ветки
← →
мндэмс (2006-10-31 18:50) [0]Смотрю чужой исходник (сам только учусь, поинтеры ещё особо не читал), и заинтересовал такой вопрос:
Есть некоторый рекордPMyRecord = ^TMyRecord;
TMyRecord = record
l1: Integer;
l2: Integer;
end;
Потом где-то заполняют его и передают в другую функцию, при этом передают в функцию его, как поинтер.var
myRec: TMyRecord;
begin
myRec.l1 := $000f;
myRec.l2 := $000e;
myProc(@myRec);
end;
procedure myProc(myRec: PMyRecord);
begin
....myRec^.l1 .....
end;
Какой смысл передавать в процедуру этот рекорд как поинтер? Почему не передать просто сам myRec?
← →
MetalFan © (2006-10-31 18:56) [1]можно и так
var
myRec: TMyRecord;
begin
myRec.l1 := $000f;
myRec.l2 := $000e;
myProc(myRec);
end;
procedure myProc(var myRec: TMyRecord);
begin
....myRec.l1 .....
end;
← →
мндэмс (2006-10-31 19:01) [2]А какой в этом смысл, только в том что бы передавать переменную как var?
← →
Palladin © (2006-10-31 19:13) [3]да, скорее всего
← →
Anatoly Podgoretsky © (2006-10-31 20:09) [4]> MetalFan (31.10.2006 18:56:01) [1]
И будет передан тот же указатель.
← →
MetalFan © (2006-10-31 20:26) [5]
> Anatoly Podgoretsky © (31.10.06 20:09) [4]
>
> > MetalFan (31.10.2006 18:56:01) [1]
>
> И будет передан тот же указатель.
ну да, я и не спорю)
> мндэмс (31.10.06 19:01) [0]
> ....
> Какой смысл передавать в процедуру этот рекорд как поинтер?
> Почему не передать просто сам myRec?
> мндэмс (31.10.06 19:01) [2]
>
> А какой в этом смысл, только в том что бы передавать переменную
> как var?
почитай чтоли умные книжки, а?
если ее изменять не надо, то можешь хоть как const передавать
← →
Anatoly Podgoretsky © (2006-10-31 20:29) [6]> MetalFan (31.10.2006 20:26:05) [5]
Если говорить в терминах Дельфи, то будет передан не указатель, а
типизированая ссылка, все ссылки являются указателями, но не все
типизированые.
← →
MetalFan © (2006-10-31 20:32) [7]
> Anatoly Podgoretsky © (31.10.06 20:29) [6]
усе, молчу... ) а то еще ченить сморожу
← →
Anatoly Podgoretsky © (2006-10-31 20:36) [8]> MetalFan (31.10.2006 20:32:07) [7]
Да не стесняйся и нам весело, со временем холодов будет меньше. А будешь
молчать дураком помрешь и не догадаешься об этом.
← →
Desdechado © (2006-10-31 20:51) [9]> поинтеры ещё особо не читал
почитай, потом удивляйся чужим исходникам
← →
мндэмс (2006-10-31 21:41) [10]Тем кто ответил - спасибо!
Абослютно не нравиться высказывания "что за лох, иди читай книжки, нам гуру программирования некогда на такие тупые вопросы отвечать". Лучше промолчать, в таких случаях.
← →
@!!ex © (2006-10-31 21:45) [11]
> мндэмс (31.10.06 21:41) [10]
Лучше чем спрашивать, сначала пойти почитать книжки...
Или на крайня в гугле порыться.
Здесь никто не понтуется.
Просто пытаться делать выводы о работе какого то кода не понимая принципов, ИМХО не есть гуд. О чем вам уже и сказали.
Собственно по сабжу.
Подумай, что будет быстрее, выделить память под копию передаваемого рекорда и скоипировать туда данные или просто передать указатель на этот рекорд?
Особенно если размеры рекорда несколько десятков мегабайт......
Читай книжки.
← →
Anatoly Podgoretsky © (2006-10-31 23:38) [12]Ой у нас очень умный появился.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.11.19;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.045 c