powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Зачем в функции переменные передают как константы?
17 сообщений из 17, страница 1 из 1
Зачем в функции переменные передают как константы?
    #39712118
Зачем в функции переменные передают как константы?

Код: pascal
1.
2.
function func(const a: integer);
...
...
Рейтинг: 0 / 0
Зачем в функции переменные передают как константы?
    #39712120
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это троллинг такой?

P.S. Чуть быстрее и рид-онли (ну, почти).
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Зачем в функции переменные передают как константы?
    #39712121
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Зачем в функции переменные передают как константы?
    #39712192
Гаджимурадов Рустам , не троллинг, но я сам редко задумывался о том, зачем это делается. Однако, слышал где-то, что таким образом избегают некоторых ошибок, а вот каких именно, не знаю.
...
Рейтинг: 0 / 0
Зачем в функции переменные передают как константы?
    #39712200
Любезный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попытался изменить значение такой константы внутри функции - получишь ошибку ещё при компиляции, а не будешь думать, почему запущенная прога работает как-то странно, если не падает вообще
...
Рейтинг: 0 / 0
Зачем в функции переменные передают как константы?
    #39712204
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зачем как константы> Однако, слышал где-то, что таким образом избегают некоторых ошибок, а вот каких именно, не знаю.

Это несерьёзно, книжно-теоретический уровень.
Для себя возьми за привычку рид-онли объявлять
как const, а не var - и достаточно. Со временем и с
опытом подобные вопросы отпадут*.

P.S. * зато другие появятся. :)
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Зачем в функции переменные передают как константы?
    #39712232
При передаче переменной как const, она передается не по значению, а по адресу. При этом чтобы избежать изменения исходной переменной, компилятор блокирует ее использование в конструкциях "x := ". При этом никто не мешает взять от переменной адрес и выполнить операцию над указателем.

Смысл использования const есть только при передаче типов strings и record (class всегда передаётся по адресу), так как если размер передаваемого объекта слишком большой, возможно переполнения стека.
...
Рейтинг: 0 / 0
Зачем в функции переменные передают как константы?
    #39712233
Valery_B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зачем как константы?,

Только что обсуждали
http://www.sql.ru/forum/593659-2/const-parametry
...
Рейтинг: 0 / 0
Зачем в функции переменные передают как константы?
    #39712266
asviridenkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир Ш.При передаче переменной как const, она передается не по значению, а по адресу. При этом чтобы избежать изменения исходной переменной, компилятор блокирует ее использование в конструкциях "x := ". При этом никто не мешает взять от переменной адрес и выполнить операцию над указателем.

Смысл использования const есть только при передаче типов strings и record (class всегда передаётся по адресу), так как если размер передаваемого объекта слишком большой, возможно переполнения стека.

Половина неправильно
...
Рейтинг: 0 / 0
Зачем в функции переменные передают как константы?
    #39712272
Фотография Квейд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир Ш.При передаче переменной как const, она передается не по значению, а по адресу. Нет. Например const Integer передастся по значению.
...
Рейтинг: 0 / 0
Зачем в функции переменные передают как константы?
    #39712957
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир Ш.,

простые типы передаются по значению всегда, не зависимо от модификаторов. другие типы передаются по адресу. но есть особенности в доступе и обработке с разными модификаторами.
...
Рейтинг: 0 / 0
Зачем в функции переменные передают как константы?
    #39712969
Котовасия
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир Ш.> class всегда передаётся по адресу

Да и это, извините, тоже галиматья.
Одно дело, когда передается адрес объекта, другое - адрес переменной, хранящей указатель на объект.
...
Рейтинг: 0 / 0
Зачем в функции переменные передают как константы?
    #39712980
s62
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот тут довольно подробно расписано, как что передается:
http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Program_Control_(Delphi)
...
Рейтинг: 0 / 0
Зачем в функции переменные передают как константы?
    #39713041
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос был не "как передаются", а "зачем передают как константы". Затем, что часто генерится более оптимальный код, в случае с массивами, структурами, строками, вариантами, интерфейсами может существенно возрасти быстродействие. Плюсом идёт более формализованное переложение мысли в код (не смотря на мнение Рустама). Если правильно помню, при создании Quake Кармак, обязал добавлять const всегда когда изменение параметра не подразумевалось. Чуть легче понять мысль при чтении незнакомого кода. Та же делфа при автогенерации сеттера автоматом добавляет const Value:xxx
...
Рейтинг: 0 / 0
Зачем в функции переменные передают как константы?
    #39713043
s62
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
white_niggerВопрос был не "как передаются", а "зачем передают как константы". Ну я ссылку привел, потому что обсуждение этой темы тут возникло.
...
Рейтинг: 0 / 0
Зачем в функции переменные передают как константы?
    #39713077
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Во урлу про Кармака нашёл

"Также я теперь стал const-нацистом, и даю по рукам программисту, который не ставит const подходящим для этого переменным и параметрам."
...
Рейтинг: 0 / 0
Зачем в функции переменные передают как константы?
    #39713080
Котовасия
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
white_niggerКотовасиятут частный случай применения синтаксиса, имеющего разную семантику в разных языках.Поделись тайными знаниями "разной семантики" модификатора const в c и делфи
Например, параметр типа char * и const char *. В первом случае строку "строка" в качестве параметра передать нельзя.
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Зачем в функции переменные передают как константы?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]