|
|
|
Зачем в функции переменные передают как константы?
|
|||
|---|---|---|---|
|
#18+
Зачем в функции переменные передают как константы? Код: pascal 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2018, 22:20 |
|
||
|
Зачем в функции переменные передают как константы?
|
|||
|---|---|---|---|
|
#18+
Это троллинг такой? P.S. Чуть быстрее и рид-онли (ну, почти). Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2018, 22:27 |
|
||
|
Зачем в функции переменные передают как константы?
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2018, 22:28 |
|
||
|
Зачем в функции переменные передают как константы?
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов Рустам , не троллинг, но я сам редко задумывался о том, зачем это делается. Однако, слышал где-то, что таким образом избегают некоторых ошибок, а вот каких именно, не знаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2018, 06:59 |
|
||
|
Зачем в функции переменные передают как константы?
|
|||
|---|---|---|---|
|
#18+
Попытался изменить значение такой константы внутри функции - получишь ошибку ещё при компиляции, а не будешь думать, почему запущенная прога работает как-то странно, если не падает вообще ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2018, 07:48 |
|
||
|
Зачем в функции переменные передают как константы?
|
|||
|---|---|---|---|
|
#18+
Зачем как константы> Однако, слышал где-то, что таким образом избегают некоторых ошибок, а вот каких именно, не знаю. Это несерьёзно, книжно-теоретический уровень. Для себя возьми за привычку рид-онли объявлять как const, а не var - и достаточно. Со временем и с опытом подобные вопросы отпадут*. P.S. * зато другие появятся. :) Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2018, 08:03 |
|
||
|
Зачем в функции переменные передают как константы?
|
|||
|---|---|---|---|
|
#18+
При передаче переменной как const, она передается не по значению, а по адресу. При этом чтобы избежать изменения исходной переменной, компилятор блокирует ее использование в конструкциях "x := ". При этом никто не мешает взять от переменной адрес и выполнить операцию над указателем. Смысл использования const есть только при передаче типов strings и record (class всегда передаётся по адресу), так как если размер передаваемого объекта слишком большой, возможно переполнения стека. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2018, 09:17 |
|
||
|
Зачем в функции переменные передают как константы?
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2018, 09:18 |
|
||
|
Зачем в функции переменные передают как константы?
|
|||
|---|---|---|---|
|
#18+
Владимир Ш.При передаче переменной как const, она передается не по значению, а по адресу. При этом чтобы избежать изменения исходной переменной, компилятор блокирует ее использование в конструкциях "x := ". При этом никто не мешает взять от переменной адрес и выполнить операцию над указателем. Смысл использования const есть только при передаче типов strings и record (class всегда передаётся по адресу), так как если размер передаваемого объекта слишком большой, возможно переполнения стека. Половина неправильно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2018, 10:09 |
|
||
|
Зачем в функции переменные передают как константы?
|
|||
|---|---|---|---|
|
#18+
Владимир Ш.При передаче переменной как const, она передается не по значению, а по адресу. Нет. Например const Integer передастся по значению. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2018, 10:24 |
|
||
|
Зачем в функции переменные передают как константы?
|
|||
|---|---|---|---|
|
#18+
Владимир Ш., простые типы передаются по значению всегда, не зависимо от модификаторов. другие типы передаются по адресу. но есть особенности в доступе и обработке с разными модификаторами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2018, 13:08 |
|
||
|
Зачем в функции переменные передают как константы?
|
|||
|---|---|---|---|
|
#18+
Владимир Ш.> class всегда передаётся по адресу Да и это, извините, тоже галиматья. Одно дело, когда передается адрес объекта, другое - адрес переменной, хранящей указатель на объект. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2018, 13:26 |
|
||
|
Зачем в функции переменные передают как константы?
|
|||
|---|---|---|---|
|
#18+
Вот тут довольно подробно расписано, как что передается: http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Program_Control_(Delphi) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2018, 13:36 |
|
||
|
Зачем в функции переменные передают как константы?
|
|||
|---|---|---|---|
|
#18+
Вопрос был не "как передаются", а "зачем передают как константы". Затем, что часто генерится более оптимальный код, в случае с массивами, структурами, строками, вариантами, интерфейсами может существенно возрасти быстродействие. Плюсом идёт более формализованное переложение мысли в код (не смотря на мнение Рустама). Если правильно помню, при создании Quake Кармак, обязал добавлять const всегда когда изменение параметра не подразумевалось. Чуть легче понять мысль при чтении незнакомого кода. Та же делфа при автогенерации сеттера автоматом добавляет const Value:xxx ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2018, 14:59 |
|
||
|
Зачем в функции переменные передают как константы?
|
|||
|---|---|---|---|
|
#18+
white_niggerВопрос был не "как передаются", а "зачем передают как константы". Ну я ссылку привел, потому что обсуждение этой темы тут возникло. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2018, 15:01 |
|
||
|
Зачем в функции переменные передают как константы?
|
|||
|---|---|---|---|
|
#18+
Во урлу про Кармака нашёл "Также я теперь стал const-нацистом, и даю по рукам программисту, который не ставит const подходящим для этого переменным и параметрам." ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2018, 15:40 |
|
||
|
Зачем в функции переменные передают как константы?
|
|||
|---|---|---|---|
|
#18+
white_niggerКотовасиятут частный случай применения синтаксиса, имеющего разную семантику в разных языках.Поделись тайными знаниями "разной семантики" модификатора const в c и делфи Например, параметр типа char * и const char *. В первом случае строку "строка" в качестве параметра передать нельзя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2018, 15:45 |
|
||
|
|

start [/forum/topic.php?fid=58&gotonew=1&tid=2040321]: |
0ms |
get settings: |
6ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
168ms |
get topic data: |
9ms |
get first new msg: |
5ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
| others: | 201ms |
| total: | 466ms |

| 0 / 0 |
