|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
06.09.2022, 12:42 | #1 |
Форумчанин
Регистрация: 10.02.2021
Сообщений: 627
|
Константа типа рекорд
Вводные данные, чисто для теста
Код:
Код:
Код:
А теперь внимание! Добавляю слово const в параметры Код:
То есть, без const идет ссылка на record а если с const - то тогда весь этот рекорд дублируется при вызове процедуры? |
06.09.2022, 12:44 | #2 |
Форумчанин
Регистрация: 10.02.2021
Сообщений: 627
|
Собственно для чего я это тестирую:
Есть одна процедура, которая вызывается с огромной кучей параметров И я хочу, чтобы все эти параметры были записаны один раз в константу рекорд и не дублировались в памяти при вызове процедуры |
06.09.2022, 12:56 | #3 |
Форумчанин
Регистрация: 10.02.2021
Сообщений: 627
|
Общий вопрос:
Как передать константу record в процедуру так, чтобы она передалась по ссылке, а не копированием переменной? |
06.09.2022, 13:02 | #4 |
Форумчанин
Регистрация: 10.02.2021
Сообщений: 627
|
Код:
Код:
Код:
Код:
|
06.09.2022, 16:29 | #5 |
Участник клуба
Регистрация: 17.04.2022
Сообщений: 1,833
|
Так в процедуру будет передаваться указатель на ту самую структуру, которую вы использовали как аргумент с собакой. По сути это и есть то, что вам нужно. При использовании const вам приходит указатель на копию, чтобы исходная структура не могла быть изменена.
|
07.09.2022, 00:25 | #6 |
Форумчанин
Регистрация: 10.02.2021
Сообщений: 627
|
Компилирую файл и не понимаю, что за ерунда:
Два варианта 1. Передавать в процедуру 20 параметров 2. Создать константу record с 20 параметрами и передавать ссылку на нее Вопрос: почему первый вариант оказывается оптимальнее? Внезапно, так меньше размер исходника |
07.09.2022, 01:33 | #7 |
Участник клуба
Регистрация: 17.04.2022
Сообщений: 1,833
|
А вам нужен меньший размер исходника или скорость работы. Дайте определение оптимальности?
|
07.09.2022, 01:48 | #8 |
ПШП
Участник клуба
Регистрация: 15.07.2013
Сообщений: 1,875
|
|
07.09.2022, 14:02 | #9 |
Высокая репутация
СуперМодератор
Регистрация: 27.07.2008
Сообщений: 15,555
|
Не совсем так. По указателю как раз изменить исходные данные можно. И доступ к данным контролируется на уровне компиляторы. В случае использования var также передается указатель, но данные можно менять. Смысл const в том, чтобы не копировать структуру при вызове подпрограммы, а передавать лишь указатель.
E-Mail: arigato.freelance@gmail.com
|
07.09.2022, 14:10 | #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 |