|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
29.04.2021, 19:37 | #1 |
Форумчанин
Регистрация: 10.02.2021
Сообщений: 623
|
var const в параметрам
Несколько вопросов
Читал в одной из статей, что var перед переменной означает что переменная не будет копироваться, а будет работать как ссылка и процедура будет воздействовать напрямую на глобальную переменную (или переменную более старшей процедуры) Тем самым ускоряя вызов процедуры, не занимая лишнюю память 1. В случае с const тоже идет не копирование переменной, а ссылка на переменную? 2. Как это работает, есть вместо переменной задана формула? procedure qqq (const s:string); Вызов qqq(s1+s2); Оно таки создает дополнительную переменную в памяти, куда пишет s1+s2, или каждый раз будет вычислять s1+s2 2.1. Тот же вопрос, если вводится функция Вызов qqq(f1(s1)); 3. Если же в качестве параметра используется часть объекта, то как тогда это работает? procedure qqq (const f: Tfont); Вызов qqq(fontDialog.font); Работает как ссылка, или же копируется, создавая лишнюю копию в памяти? |
29.04.2021, 20:39 | #2 |
Высокая репутация
СуперМодератор
Регистрация: 27.07.2008
Сообщений: 15,544
|
Запустил такой тест:
Код:
Код:
E-Mail: arigato.freelance@gmail.com
|
29.04.2021, 20:45 | #3 |
Высокая репутация
СуперМодератор
Регистрация: 27.07.2008
Сообщений: 15,544
|
Однако для массивов результат уже другой:
Код:
Код:
E-Mail: arigato.freelance@gmail.com
|
29.04.2021, 21:36 | #4 |
Форумчанин
Регистрация: 10.02.2021
Сообщений: 623
|
Ага, то есть const пользоваться нет никакого смысла, надо все через var тогда делать?
а в случае с объектом что будет? |
29.04.2021, 21:39 | #5 |
Высокая репутация
СуперМодератор
Регистрация: 27.07.2008
Сообщений: 15,544
|
Ну почему же? С массивами передается ссылка, с записями (record) тоже ссылка. Со строками, где указано число символов (string[10]) - ссылка.
E-Mail: arigato.freelance@gmail.com
|
25.05.2021, 13:26 | #6 | |
Форумчанин
Регистрация: 10.02.2021
Сообщений: 623
|
Интересно получается
Код:
Цитата:
|
|
25.05.2021, 13:55 | #7 | |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,526
|
Цитата:
@ -- адрес ПЕРЕМЕННОЙ. в которой записан указатель на объект. и их(переменных) адреса естественно разные. зачем передавать по ссылке то что и так является ссылкой(УКАЗАТЕЛЕМ). выведите 1. Pointer(memo1.Lines); 2. Pointer(q);
программа — запись алгоритма на языке понятном транслятору
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как изловчиться.... my $var = sub1() || sub2($var); | IgorKiev | Perl | 1 | 16.10.2018 07:57 |
С++ Преобразование const Char в const GUID | Decoy2k | Общие вопросы C/C++ | 9 | 07.02.2012 14:02 |
какая разница между const var и без ничего в процедуре | KpecTHbIi | Паскаль, Turbo Pascal, PascalABC.NET | 2 | 11.01.2012 20:37 |
Var | Черничный | Общие вопросы Delphi | 4 | 17.07.2008 00:44 |
var | Черничный | Общие вопросы Delphi | 9 | 25.06.2008 17:10 |