Перейти к содержимому

Оператор разыменования

Введение

Оператор разыменования (*) используется для получения значения по адресу, на который указывает указатель. Этот оператор является основным инструментом для работы с указателями и управления памятью в C++.

Синтаксис и работа оператора

Синтаксис

*pointer

Работа

Оператор разыменования берет указатель pointer и возвращает значение, хранящееся по адресу, на который указывает этот указатель.

Примеры использования

Пример 1: Разыменование указателя на переменную

#include <iostream>
int main() {
int num = 10;
int* ptr = &num;
std::cout << "Value of num = " << *ptr << std::endl;
return 0;
}

Вывод

Value of num = 10

В этом примере ptr — это указатель на переменную num. Оператор * используется для получения значения num через указатель ptr.

Пример 2: Изменение значения через указатель

#include <iostream>
int main() {
int num = 10;
int* ptr = &num;
*ptr = 20; // изменение значения num через указатель
std::cout << "New value of num = " << num << std::endl;
return 0;
}

Вывод

New value of num = 20

В этом примере значение переменной num изменяется через указатель ptr с использованием оператора разыменования.

Пример 3: Разыменование указателя на массив

#include <iostream>
int main() {
int arr[] = {1, 2, 3, 4, 5};
int* ptr = arr; // указатель на первый элемент массива
std::cout << "First element = " << *ptr << std::endl;
std::cout << "Second element = " << *(ptr + 1) << std::endl;
return 0;
}

Вывод

First element = 1
Second element = 2

В этом примере ptr указывает на первый элемент массива arr. Оператор * используется для доступа к элементам массива через указатель.

Пример 4: Динамическое выделение памяти и разыменование

#include <iostream>
int main() {
int* ptr = new int; // динамическое выделение памяти
*ptr = 30; // присваивание значения
std::cout << "Value = " << *ptr << std::endl;
delete ptr; // освобождение памяти
return 0;
}

Вывод

Value = 30

В этом примере память для переменной выделяется динамически с помощью оператора new. Оператор разыменования используется для присваивания и получения значения.

Важные замечания

  • Оператор разыменования должен использоваться только с допустимыми указателями. Разыменование нулевого или неинициализированного указателя приведет к неопределенному поведению.
  • Правильное управление памятью (например, освобождение памяти, выделенной с помощью new, с помощью delete) необходимо для предотвращения утечек памяти.

Резюме

  • Оператор разыменования (*) используется для доступа к значению, хранящемуся по адресу, на который указывает указатель.
  • Примеры использования включают доступ к значению переменной, изменение значения через указатель, работу с массивами и динамическое выделение памяти.
  • Важно: необходимо следить за корректностью указателей и управлением памятью, чтобы избежать ошибок и утечек памяти.