При сравнении констант в языках программирования C и C++ можно отследить некую аналогию. Для определения константы в языке С чаще применяется лишь директива препроцессора #define:
#define MAX 100
В языке С++ же для определения констант советуется применять объявление переменной с первоначальным значением и ключевым словом const:
const тип ИмяПеременной = НачальноеЗначение;
const int n=10;
Область видимости переменной совпадает с областью видимости стандартной переменной. При применении ключевого слова const, возможно объявлять на константу указатель.
const тип *ИмяПеременной;
const int *m; // m – указатель на константу типа int
const int n=3;
m = &n;
Еще один вариант использования const — это формирование неизменного указателя на величину используемого типа:
тип *const ИмяПеременной = Значение;
int i;
int *const ptri=&i;
Достоинства ключевого слова const в использовании.
В использовании слова const на практике выделяется несколько значительных преимуществ по сравнению с #define.
Если объявляется константа с применением const, то тип величины указывается конкретно;
Константы, которые были объявлены с помощью const, гораздо проще сочетаются с производными типами, к примеру, задание массива:
const int base_vals[5] = { 1000, 2000, 3500, 6000, 10000};
Идентификаторы констант const и переменных подчиняются одним и тем же правилам, также можно создавать константы с разнообразной областью видимости.
Перечислимый тип данных
Используя ключевое слово enum, можно объявлять особенный целочисленный тип, содержащий конкретную совокупность именованных целых констант — перечисленные константы:
enum тег {СписокИменованныхКонстант};
enum day {sun, mon, tue, wen, thu, fri, sat};
enum flag {false, true};
Такое определение также позволяет создавать целочисленный массив типа day с наименованиями семи дней недели, каждый из которых соответствует целочисленной константе. Перечислимые идентификаторы — константы, по умолчанию имеющие значения 0, 1, 2, 3, 4, 5, 6. Значение 0 присваивается первому, а каждый последующий получает значение на единицу больше предыдущего. Иногда значения по умолчанию не удовлетворяют условиям определённой задачи, тогда перечислимые константы инициализируются с помощью случайных целочисленных констант или константных сочетаний:
enum number {a=54,b,c=60,d=c+5}; // b=55, d=65
Также возможно объявление целой константы без тега, то есть, анонимно:
enum {off,on} signal;
signal=on;