Константы в C++
Переменные — ячейки памяти, содержащие информацию, значения которых можно изменять. Например:
int a = 8;
a = 12;
Константы, в отличие от переменных, после инициализации изменить нельзя. Например, число π. Для объявления константы используется ключевое слово const:
const double pi = 3.14;
Попытка изменить значение константы вызовет ошибку компиляции:
pi = 2.34; // Ошибка!
Указатели в C++
Указатель — переменная, хранящая адрес другой ячейки памяти. Он указывает на начало блока данных. Вместо копирования значения переменной, передаётся указатель на неё, что эффективно при работе с большими объёмами данных.
Создадим переменную value:
int value = 8;
Теперь создадим указатель на value:
int *ptr_value = &value;
Символ * перед именем указателя (ptr_value) обозначает, что это указатель. Символ & перед именем переменной (value) возвращает её адрес в памяти.
Для получения значения переменной по указателю используется оператор разыменовывания *:
std::cout << *ptr_value; // Выведет 8
Изменение значения переменной через указатель:
*ptr_value = 343;
std::cout << value; // Выведет 343
Адрес переменной в памяти выводится с помощью оператора & без *:
std::cout << &value;
std::cout << ptr_value; // Адреса будут одинаковыми
Указатели могут указывать на другие указатели (указатели на указатели):
int **ptr_ptr_value = &ptr_value;
*ptr_ptr_value = new int(50);
std::cout << value; // Выведет 50
Ссылки в C++
Ссылки — скрытая форма указателя, автоматически разыменовывающегося при использовании. Они обеспечивают прямой доступ к объекту.
Создадим ссылку на переменную value:
int &reference = value;
Теперь reference и value — это два имени одной и той же переменной:
reference = 12;
std::cout << value; // Выведет 12
Разница между указателями и ссылками:
Указатели используются для организации динамических объектов, ссылки — для прямого доступа к объектам. Указатель хранит адрес, а ссылка напрямую связана с объектом (своего рода псевдоним). Главное различие — в механизме работы для компилятора.
Указатели и ссылки — важные инструменты в C++, позволяющие эффективно управлять памятью и данными. Понимание принципов их работы необходимо для дальнейшего изучения языка.