Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Клуб программистов > Свободное общение
Регистрация

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.03.2010, 21:07   #1
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию Смысл констант

Думал написать в раздел дельфы, но это скорее философский вопрос.


Зачем собственно делать константы, если можно сделать переменные и еще в разделе описание приделать к ним значения?

Код:
Const
 PbISH = 'OLOLO';

Var
 PbISH : String = 'OLOLO';
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 26.03.2010, 21:16   #2
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Косвенная или прямая адресация
т.е. константа может "вставляться" компилятором при каждом объявлении в коде, таким образом формируется прямая адресация, иначе обращение происходит косвенным образом, т.к. указывается адрес (переменная) на данные.
p.s. конечно может я ошибаюсь, но вроде такова идеология
BOBAH13 вне форума Ответить с цитированием
Старый 26.03.2010, 21:16   #3
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию

Что-бы:
1. Вы, или тот, кто пользуется вашим кодом (библиотекой) по ошибке не изменил значение переменной
2. Не знаю как в делфи, но например в C++ константы имеют особые привилегии, которых не имеют переменные, например константу можно указать в качестве размерности массива, без использования динамической памяти.
3. Обычно компиляторы присваивают значения константам во-время компиляции, и программа не высчитывает значения, как у переменных, следовательно операции с константами работают быстрее (но это зависит от реализации компилятора)
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
Blade вне форума Ответить с цитированием
Старый 26.03.2010, 21:21   #4
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,551
По умолчанию

Ну, константа защищена от случайного изменения.
Если константа целочисленная, то, на сколько я понимаю, под неё вообще не отводится дополнительной ячейки памяти, как под переменную.

P.S. О, уже наотвечать успели
Arigato вне форума Ответить с цитированием
Старый 26.03.2010, 21:33   #5
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

Код:
Const
 PbISH = 'OLOLO';

Var
 PbISH : String = 'OLOLO';
во втором случае, как я понимаю - просто инициализация. далее в эту переменную можно записать новое значение. а константу, как уже сказали, изменить нельзя.
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 26.03.2010, 22:06   #6
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Так все таки использование констант дает увеличение скорости выполнения в дельфи или не дает?
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 26.03.2010, 22:14   #7
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,551
По умолчанию

А оно Вам нужно это ускорение?
Использование констант даёт дополнительные удобства. Остальное второстепенно.
Arigato вне форума Ответить с цитированием
Старый 26.03.2010, 22:15   #8
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Ясно. Т.е. это скорее для того, чтобы быстро менять некоторые параметры (например уравнения) при отладке?
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 26.03.2010, 23:29   #9
Juffin
Форумчянин
Форумчанин
 
Аватар для Juffin
 
Регистрация: 05.04.2009
Сообщений: 446
По умолчанию

Цитата:
Ясно. Т.е. это скорее для того, чтобы быстро менять некоторые параметры (например уравнения) при отладке?
Скорее всего да. Я думаю, что имена констант тупо заменяются на их значения еще до компиляции.
Nobody expects Spanish Inquisition!
Juffin вне форума Ответить с цитированием
Старый 26.03.2010, 23:34   #10
Levsha100
Заблокирован
Старожил
 
Регистрация: 20.07.2008
Сообщений: 4,032
По умолчанию

Цитата:
Скорее всего да. Я думаю, что имена констант тупо заменяются на их значения еще до компиляции.
По-моему для констант выделяется память в оперативке, а заменяются дефайны.
Levsha100 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Видимость констант tae1980 Microsoft Office Excel 5 23.11.2009 12:06
Задание размеров формы с помощью констант (C++) Хохол Общие вопросы .NET 2 20.11.2009 13:19
считывание констант artemavd Общие вопросы Delphi 18 15.10.2008 15:32
произвольный выбор из констант Arhangel_bes Помощь студентам 11 12.10.2008 22:07
Замена констант в RichEdit. Pashekka Компоненты Delphi 1 24.09.2007 09:42