const ключевое слово языка Си. Сделать переменную или указатель неизменяемым.

1) Константные переменные принимают свое значение при создании (инициализации).

const int SIZE = 5; // Правильно
const int NEW_SIZE; // Ошибка! Теперь переменной SIZE нельзя задать значение
2) После инициализации, значение константной переменной больше нельзя изменить - компилятор выдаст ошибку.

const int SIZE = 10; 
SIZE = 5; // Ошибка! Нельзя изменить константную переменную
3) Ключевое слово const можно ставить и до и после типа переменной.

const int SIZE = 10;
int const SIZE = 10; // Аналогично предыдущему выражению
4) Можно делать константным массив, и его значения нельзя будет изменить.

const int AR[4] = {1, 4, 9, 16};
AR[0] = 1; // Ошибка! Нельзя изменить константную переменную
5) Можно объявить константной структуру и ее значения нельзя будет изменить.

struct point_st{
    int x;
    int y;
};
const struct point_st center = {10, 5};
center.x = 10; // Ошибка! Нельзя изменить значение константной структуры
6) Можно сделать константным поле структуры и только его нельзя будет изменить.

struct point_st{
    int x;
    const int y;
};
struct point_st center = {10, 5};
center.x = 20; // ОК
center.y = 10; // Ошибка! Нельзя изменить значение константного поля структуры
7) У константного указателя, в зависимости от того где стоит ключевое слово const, можно запретить менять либо адрес, либо значение по адресу, либо и адрес и значение.
Если const стоит до звездочки, то нельзя менять значение по адресу указателя.

int a = 5;
int b = 10;
const int *c = &a; // Инициализация константного указателя
c = &b; // OK
*c = b; // Ошибка! Нельзя менять значение переменной в константном указателе
8) Если const стоит после звездочки, то нельзя менять адрес указателя.

int *const c = &a; // Инициализация константного указателя
c = &b; // Ошибка! Нельзя ссылаться на другой адрес
*c = b; // OK
Мнемоническое правило для запоминания константных указателей Си
9) Если const стоит до и после звездочки, то нельзя менять ни значение ни адрес указателя.

const int *const c = &a; // Инициализация константного указателя
c = &b; // Ошибка! Нельзя ссылаться на другой адрес
*c = b; // Ошибка! Нельзя менять значение
2023-06-10



Понравилась страница?
Добавить в закладки
Или поделиться!

Связанные темы

auto ключевое слово языка Си.
break оператор языка Си. Завершает выполнение операторов do, while, for, switch.
case ключевое слово языка Си. Используется в операторе switch для задания одной из веток ветвления.
Время выполнения программы на языке Си. Функция clock().
const ключевое слово языка Си. Сделать переменную или указатель неизменяемым.
continue оператор языка Си. Пропускает текущую итерацию цикла.
default ключевое слово языка Си.
do while ключевые слова Си.
else ключевое слово языка Си.
Функции работы с файлами в языке Си
for оператор языка Си.
if оператор языка Си.
Ключевые слова языка Си
Указатели в языке Си
register Си, размещение переменных в регистрах процессора
Зарезервированные имена языка Си
signed ключевое слово языка Си.
Структуры в языке Си. Примеры различного использования.
switch оператор языка Си.
typedef ключевое слово языка Си. Задание псевдонимов для типов данных.
Типы данных языка Си
unsigned ключевое слово Си.
void ключевое слово языка Си.
volatile ключевое слово языка Си.
while оператор цикла языка Си.