![]() |
|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 10.02.2021
Сообщений: 643
|
![]()
Несколько вопросов
Читал в одной из статей, что 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); Работает как ссылка, или же копируется, создавая лишнюю копию в памяти? |
![]() |
![]() |
![]() |
#2 |
Высокая репутация
СуперМодератор
Регистрация: 27.07.2008
Сообщений: 15,591
|
![]()
Запустил такой тест:
Код:
Код:
E-Mail: arigato.freelance@gmail.com
|
![]() |
![]() |
![]() |
#3 |
Высокая репутация
СуперМодератор
Регистрация: 27.07.2008
Сообщений: 15,591
|
![]()
Однако для массивов результат уже другой:
Код:
Код:
E-Mail: arigato.freelance@gmail.com
|
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 10.02.2021
Сообщений: 643
|
![]()
Ага, то есть const пользоваться нет никакого смысла, надо все через var тогда делать?
а в случае с объектом что будет? |
![]() |
![]() |
![]() |
#5 |
Высокая репутация
СуперМодератор
Регистрация: 27.07.2008
Сообщений: 15,591
|
![]()
Ну почему же? С массивами передается ссылка, с записями (record) тоже ссылка. Со строками, где указано число символов (string[10]) - ссылка.
E-Mail: arigato.freelance@gmail.com
|
![]() |
![]() |
![]() |
#6 | |
Форумчанин
Регистрация: 10.02.2021
Сообщений: 643
|
![]()
Интересно получается
Код:
Цитата:
|
|
![]() |
![]() |
![]() |
#7 | |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,527
|
![]() Цитата:
@ -- адрес ПЕРЕМЕННОЙ. в которой записан указатель на объект. и их(переменных) адреса естественно разные. зачем передавать по ссылке то что и так является ссылкой(УКАЗАТЕЛЕМ). выведите 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 |