Другие языки программирования и технологии

Вопрос про константы в С++ внутри.

В одном месте пишут что константа - это сомо значение в переменной которое можно изменить. А в другом месте пишут что константа - это не само значение, а почти такая-же переменная, но объявлена с ключевым словом const , и значение в ней нальзя изменить. какое понятие константа правильно: 1) значение переменной, которое можно изменить. 2) объявленная константа с ключевым словом const 3) или то и другое
Константа - это фиксированное значение, которое не может быть изменено программой.
Например, символьный литерал 'A' является константой, или целочисленный литерал 10 также является константой.
Например, в выражении
2*x + 10
2 и 10 являются целочисленными константами.
а в предложении

const *char = "ABCDE";

"ABCDEЭ является строковой константой или строковым литералом.

Также можно объявлять и переменные, которые будут выполнять роль константы, то есть их можно инициализировать один раз при объявлении, но нельзя менять их значение. Фактически, это есть ничто иное, как именованные константы. То есть, например, вместо того, чтобы в программе использовать магическое число 3.14, которое может означать на самом деле все, что угодно, вы можете ей присвоить имя, чтобы по ее имени пользователь понимал смысл этой константы.
Например,
double pi = 3.14; pi - это математическая константа Пи.

Модификатор const может применяться и указателям.
Например, объявление

const char *p;
означает, что указатель p может указывать на некоторое символьное значение, но это значение этим указателям менть нельзя.
Можно сделать сам указатель константным, то есть значение указателя менять нельзя, а то, на что он показывает, менять можно. Делается это помещением модификатора const справа от звездочки:

char * const p;

Можно сделать так, что сам указатель будет константным, то есть неизменным, и то, на что он указывает, также будет неизменным:

const char * const p;

Кроме того модификатор const может указываться у функций-членов класса, означая тем самым, что подобная функция не имеет права изменять значение объекта.
Есть также константные ссылки. Например,

const int &x = y;

Константные ссыли могут только предоставлять доступ на чтение, а не на запись.
Роман Ткаченко
Роман Ткаченко
79 586
Лучший ответ
Слово константа имеет два значения, но первое из них отличается от приведенного определения. Это не значение переменной, а значение, записанное в виде обозначения его величины обычным способом. Например, 2.45 - константа. И a в const int a=2.45 - тоже константа, просто именованная. Аналогично "abcd" - тоже константа. И b в const char b[]="abcd" - тоже константа. Или можно сказать во втором случае - константная переменная.
Это переменная, в которую можно заложить данные только 1 раз, потом она блокируется на запись, а любая попытка записать в неё что-нибудь потом воспринимается как ошибка программы.
Правильным является второй вариант. Константой является переменная объявленная со спецификатором const, и её нельзя изменить
Константа из памяти может только читаться и записана в секцию имеющую аттрибут "только чтение".. так что можно делать вывод. . так что никак не первое..
Тут надо уточнить, что на самом деле значение константы изменить можно.
Почитай про const_cast и mutable у Алёнки:
http://alenacpp.blogspot.com/2005/10/mutable-constcast.html