![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 10.02.2021
Сообщений: 684
|
![]()
Вводные данные, чисто для теста
Код:
Код:
Код:
А теперь внимание! Добавляю слово const в параметры Код:
То есть, без const идет ссылка на record а если с const - то тогда весь этот рекорд дублируется при вызове процедуры? |
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 10.02.2021
Сообщений: 684
|
![]()
Собственно для чего я это тестирую:
Есть одна процедура, которая вызывается с огромной кучей параметров И я хочу, чтобы все эти параметры были записаны один раз в константу рекорд и не дублировались в памяти при вызове процедуры |
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 10.02.2021
Сообщений: 684
|
![]()
Общий вопрос:
Как передать константу record в процедуру так, чтобы она передалась по ссылке, а не копированием переменной? |
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 10.02.2021
Сообщений: 684
|
![]() Код:
Код:
Код:
Код:
|
![]() |
![]() |
![]() |
#5 |
Участник клуба
Регистрация: 17.04.2022
Сообщений: 1,833
|
![]()
Так в процедуру будет передаваться указатель на ту самую структуру, которую вы использовали как аргумент с собакой. По сути это и есть то, что вам нужно. При использовании const вам приходит указатель на копию, чтобы исходная структура не могла быть изменена.
|
![]() |
![]() |
![]() |
#6 |
Форумчанин
Регистрация: 10.02.2021
Сообщений: 684
|
![]()
Компилирую файл и не понимаю, что за ерунда:
Два варианта 1. Передавать в процедуру 20 параметров 2. Создать константу record с 20 параметрами и передавать ссылку на нее Вопрос: почему первый вариант оказывается оптимальнее? Внезапно, так меньше размер исходника |
![]() |
![]() |
![]() |
#7 |
Участник клуба
Регистрация: 17.04.2022
Сообщений: 1,833
|
![]()
А вам нужен меньший размер исходника или скорость работы. Дайте определение оптимальности?
|
![]() |
![]() |
![]() |
#8 |
ПШП
Участник клуба
Регистрация: 15.07.2013
Сообщений: 1,926
|
![]() |
![]() |
![]() |
![]() |
#9 |
Высокая репутация
СуперМодератор
Регистрация: 27.07.2008
Сообщений: 15,810
|
![]()
Не совсем так. По указателю как раз изменить исходные данные можно. И доступ к данным контролируется на уровне компиляторы. В случае использования var также передается указатель, но данные можно менять. Смысл const в том, чтобы не копировать структуру при вызове подпрограммы, а передавать лишь указатель.
E-Mail: arigato.freelance@gmail.com
|
![]() |
![]() |
![]() |
#10 |
Участник клуба
Регистрация: 17.04.2022
Сообщений: 1,833
|
![]()
Тут копирование происходит потому, что создается второй объект с const - не изменяемый. И на него передается указатель.
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Рекорд одновременного пребывания на форуме | digitalis | О форуме и сайтах клуба | 3 | 24.06.2019 22:49 |
что за константа | HTTqp | Общие вопросы Delphi | 3 | 01.09.2015 15:17 |
Константа | Михаил Юрьевич | Общие вопросы Delphi | 2 | 16.11.2014 22:47 |
Константа | ideasforlife | Общие вопросы C/C++ | 6 | 09.05.2011 16:06 |
что такое константа? | if-soft | Паскаль, Turbo Pascal, PascalABC.NET | 11 | 14.10.2008 19:19 |