Форум программистов
 
Регистрация на форуме тут, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Как купить рекламу на форуме


Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме 20000 рублей в месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.06.2021, 18:40   #1
Kronos913
Форумчанин
 
Регистрация: 10.02.2021
Сообщений: 168
По умолчанию Const - ссылка, или же копирование содержимого?

У меня такой вопрос:
В каком случае константа - хранится 1 раз в памяти и каждое ее обращение - это ссылка на ячейку памяти с ней, а в каком случае каждый раз просто она копируется в то место, где к ней обращение?

К примеру, как-то в одной программе я для упрощения написания использовал две константы:
Код:
const
f=false;
t=true;
И каждое обращение было ссылкой на ячейку памяти? Или же компилятор при компиляции подставлял false и true во все места?
Kronos913 вне форума Ответить с цитированием
Старый 10.06.2021, 18:52   #2
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,568
По умолчанию

Kronos913, просто посмотрите код на Ассемблере, который генерирует компилятор.
Arigato на форуме Ответить с цитированием
Старый 10.06.2021, 23:11   #3
Kronos913
Форумчанин
 
Регистрация: 10.02.2021
Сообщений: 168
По умолчанию

Знать бы как это сделать...
Kronos913 вне форума Ответить с цитированием
Старый 10.06.2021, 23:40   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 6,122
По умолчанию

Код:
const
  t = True;
...
procedure TForm1.Button1Click(Sender: TObject);
var
  a: Boolean;
begin
  a := True;
  if a = True then
    ShowMessage('1');
  if a = t then
    ShowMessage('2');
end;
Между номером строки и самим кодом есть еще столбец. Нажмите там напротив обоих if'ов, чтобы поставить breakpoint'ы. Затем запустите из IDE программу и нажмите кнопку. Программа остановится на первом breakpoint'e. Нажмите на код правой кнопкой и выберите Debug - View CPU. Там будет ассемблерный код вперемешку с исходным (после каждой строки исходного кода его ассемблерный код). Красные кружки помогут понять, какие строки сравнивать.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 11.06.2021, 03:23   #5
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,693
По умолчанию

Цитата:
Сообщение от Kronos913 Посмотреть сообщение
Знать бы как это сделать...
Цитата:
Сообщение от BDA Посмотреть сообщение
Там будет ассемблерный код
Теперь будет вопрос "знать бы как этот код понять"?
northener вне форума Ответить с цитированием
Старый 11.06.2021, 03:42   #6
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 6,122
По умолчанию

northener, может быть, но увидеть, что асм одинаковый, можно и без понимания асма
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Ответ
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамическая ссылка или корректная ссылка при смещающихся строках ser-vin Microsoft Office Excel 3 11.04.2019 22:54
Копирование содержимого по условию. Alex_Dom Microsoft Office Excel 3 25.12.2018 23:20
копирование содержимого каждого листа в книги в одну таблицу skapitan Microsoft Office Excel 3 17.12.2018 18:39
Копирование содержимого таблиц access на листы excel 2003 ольгаг Microsoft Office Excel 7 14.07.2017 12:25
Копирование всего содержимого в папке на С++ Alex1991 Помощь студентам 0 20.04.2011 16:46



Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS