Мне всё ясно
Этот топик читают: Гость
Ответов: 1321
Рейтинг: 37
|
|||
карма: 0 |
|
Разработчик
Ответов: 26156
Рейтинг: 2127
|
|||
Netspirit писал(а): Не получится для локальной переменной (так как они не инициализируются), а для глобальной - вполне.Пример на IC в студию, где можно прописать константу с определением значения без const ------------ Дoбавленo в 13.49: Roma писал(а): Мне всё ясноАй, ай, ай, Roma, наехал на уважаемого человека, нехорошо |
|||
карма: 22 |
|
Ответов: 1321
Рейтинг: 37
|
|||
nesco писал(а): Ай, ай, ай, Roma, наехал на уважаемого человека, нехорошоЯ ненакого не наезжал |
|||
карма: 0 |
|
Разработчик
Ответов: 26156
Рейтинг: 2127
|
|||
Roma писал(а): Я ненакого не наезжалА это кто писал Roma писал(а): Tad, перед тем как советовать, изучи самА дело-то было совсем не в этом |
|||
карма: 22 |
|
Ответов: 1321
Рейтинг: 37
|
|||
Ладно ,извини Tad
------------ Дoбавленo в 13.58: Я просто посчитал что если там написано, то это правильно |
|||
карма: 0 |
|
Ответов: 4630
Рейтинг: 749
|
|||
nesco писал(а): Пример на IC в студиюНе знал, что глобальные переменные можно инициализировать? |
|||
карма: 26 |
| ||
файлы: 1 | 111.sha [792B] [328] |
Разработчик
Ответов: 26156
Рейтинг: 2127
|
|||
Netspirit писал(а): Не знал, что глобальные переменные можно инициализировать?Мы про константы говорили, а ты привел пример глобальной переменной var a: array[0..2] of integer = (2,5,7);
А мы разговор вели, вообще-то, вот про это Именованные константы объявляются с помощью ключевого слова const. Это слово начинает раздел объявления констант. После него может следовать ряд объявлений констант в форме:
<идентификатор константы> = <константное выражение>; Имеются также предопределенные константы: true - истина, false - ложь, nil - нулевой указатель. Объявление именованной константы является указателем для компилятора заменить во всем тексте идентификатор константы его значением. Такая замена производится только в процессе компиляции и не отражается на исходном тексте. Переменные можно разделить на локальные и глобальные. Переменные, объявляемые в процедурах и функциях, являются локальными. Они существуют только во время выполнения соответствующей процедуры или функции. Т.е. память для них выделяется только при вызове соответствующей процедуры или функции и освобождается при возврате в вызвавшую процедуру. Переменные, объявленные вне процедур или функций, являются глобальными.
Netspirit, разницу уловил |
|||
карма: 22 |
|
Ответов: 4630
Рейтинг: 749
|
|||
А я думал, мы говорили про это
Tad писал(а): 1. без слова const - так НЕПОЛУЧИТСЯ.Только Tad'у стоило бы уточнить, что НЕ ПОЛУЧИТСЯ, если в теле функции. |
|||
карма: 26 |
|
Разработчик
Ответов: 26156
Рейтинг: 2127
|
|||
Netspirit, под любую переменную всегда выделяется память в RealTime (для глобальной еще и всегда, в отличии от локальной), константа же тупо меняется компилятором на этапе компиляции на ее значение
Вот я тебя и спросил nesco писал(а): разницу уловилНарод! Вы иногда мозги включайте. Сделать-то можно всякое, но вот к чему это все потом приведет... |
|||
карма: 22 |
|
Ответов: 4630
Рейтинг: 749
|
|||
Я-то уловил, но имел в виду именно высказывание Tad'a.
И, кстати, с любой константой можно работать, как с переменной (через указатель), так что под них память тоже выделяется. |
|||
карма: 26 |
|
Разработчик
Ответов: 26156
Рейтинг: 2127
|
|||
Netspirit писал(а): И, кстати, с любой константой можно работать, как с переменной (через указатель), так что под них память тоже выделяетсяДа, а каже вот это Такая замена производится только в процессе компиляции...
... Цель объявления именованной константы - сделать текст более осмысленным и облегчить при необходимости изменение значения константы во всем тексте Ты, случаем, с типизированными константами не попутал Типизированные константы, несмотря на такое неудачное название и несмотря на то, что они объявляются в разделе констант const, в действительности являются не константами, а переменными, инициализируемыми при их объявлении, т.е. получающими начальное значение
... Типизированная константа объявляется выражением: const <идентификатор> : <тип> = <константное выражение>; Например: const In: integer = 7; Angl: double = 35*Pi/180; В дальнейшем тексте программы с типизированными константами можно обращаться как с обычными переменными, изменяя, когда требуется |
|||
карма: 22 |
|
Ответов: 4630
Рейтинг: 749
|
|||
Согласен, этого не знал, но тем не менее const - оно и есть const.
|
|||
карма: 26 |
|
Разработчик
Ответов: 26156
Рейтинг: 2127
|
|||
Netspirit, кстати, выдержку из учебника, где сказано про то что
Netspirit писал(а): с любой константой можно работать, как с переменной (через указатель)можешь привести, да и пример на IC неплохо бы в подтверждение |
|||
карма: 22 |
|
Ответов: 4630
Рейтинг: 749
|
|||
Я для себя раньше не разделял константы на типизированные и нетипизированные.
Поэтому, моё "любая константа" следует рассматирвать как "типизированная". Конечно, если константа-массив рассматривается компилятором как переменная, то по указателю можно делать что угодно. Например: [offtop] Повторюсь, я опровергал мнение, что инициализированный массив обязан объявляться с помощью const [/offtop] |
|||
карма: 26 |
| ||
файлы: 1 | example.sha [894B] [328] |
Разработчик
Ответов: 26156
Рейтинг: 2127
|
|||
Netspirit писал(а): Повторюсь, я опровергал мнение, что инициализированный массив обязан объявляться с помощью constПожалуй, с этим я соглашусь -- любой массив, объявленный константой, будет типизированной константой и под него будет выделена память, те именованной константой он не будет никогда |
|||
карма: 22 |
|