Чем в С++ константа отличается от переменной? Как константа объявляется?
В C++ под константами и литералами, как правило, подразумевают одно и то же: это такие значения, предназначенные для восприятия пользователем, которые не могут быть изменены в ходе выполнения программы. Приведенное определение относится большей частью к литералу.
Под константами здесь и далее будем подразумевать именованные ячейки памяти, значения которых фиксируются на начальном этапе выполнения программы и затем в процессе выполнения программы не могут быть изменены. В этом смысле константы – это те же переменные, но только с фиксированным, определенным единожды, значением.
Для превращения переменной в постоянное запоминающее устройство, то есть в константу, используют идентификатор const. Идентификатор указывается перед типом переменной и гарантирует неизменность значения переменной. Само значение переменной присваивается либо при объявлении, либо позже в программе, но только один раз и до первого использования переменной в программе.
Например, инструкцией const int m=5 инициализируется целочисленная переменная m со значением 5. После этого переменную m можно использовать в выражениях, однако изменить значение переменной не удастся.
Отличительной особенностью переменных является то, что мы можем многократно в течение работы программы изменять их значение:
1 2 3 |
int n {7}; n = 9; n = 5; |
Но кроме переменных в языке программирования C++ можно определять константы. Их значение устанавливается один раз и впоследствии мы его не можем изменить. Константа определяется практически так же, как и переменная за тем исключением, что в начале определения константы идет ключевое слово const. Например:
1 2 3 |
const int n {22}; // или // const int n = 22; |
И также в процессе программы мы сможем обращаться к значению константы:
1 2 3 4 5 6 7 |
#include <iostream>
int main() |
Но если же мы захотим после определения константы присвоить ей некоторое значение, то компилятор не сможет скомпилировать программу и выведет ошибку:
1 2 |
const int age {22}; age = 78; |
То есть такой код не будет работать. И так как нельзя изменить значения константы, то ее всегда необходимо инициализировать, если мы хотим, чтобы она имела некоторое значение.
Если константа не будет инициализирована, то компилятор также выведет ошибку и не сможет скомпилировать программу, как в следующем случае:
1 | const int age; |
В качестве значения константам можно передавать как обычные литералы, так и динамически вычисляемые значения, например, значения переменных или других констант:
1 2 3 4 |
int a {10}; const int b {7}; const int d {b}; const int x {a}; |
Обычно в качестве констант определяются такие значения, которые должны оставаться постоянными в течение работы всей программы и не могут быть изменены. Например, если программа выполняет математические операции с использованием числа PI, то было бы оптимально определить данное значение как константу, так как оно все равно в принципе неизменно:
1 | const float pi {3.14}; |
***
*https://metanit.com/cpp/tutorial/2.5.php
*https://codernet.ru/books/c_plus/samouchitel_c_s_primerami_i_zadachami_aleksandr_vasilev/