Menu
CoddyTech

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

Часть раздела Логика и управление потоком путешествия по C++ на Coddy. Урок 3 из 56.

Теперь, когда вы умеете получать указатель на переменную, нужно научиться читать и изменять значение по этому адресу в памяти. Здесь не обойтись без оператора разыменования (*).Оператор разыменования * позволяет получить значение, хранящееся по адресу в памяти, на который указывает указатель. Если поставить * перед переменной-указателем, он «переходит» по адресу и возвращает значение, которое там хранится.Помните: оператор взятия адреса (&) возвращает адрес переменной в памяти, а оператор разыменования (*) даёт доступ к значению по этому адресу.
int number = 42;
int* ptr = &number;  // ptr хранит адрес number
int value = *ptr;    // value теперь содержит 42
С помощью оператора разыменования можно также изменить исходную переменную через указатель. Присваивая новое значение *ptr, вы на самом деле меняете значение, хранящееся в этой ячейке памяти:
*ptr = 100;  // Меняет number на 100
// Теперь number равно 100, хотя мы изменили его через ptr
Именно этот косвенный доступ делает указатели такими мощными: вы можете читать и изменять переменные из любого места программы, если у вас есть указатель на них.
challenge icon

Задание

Легко

Напишите программу, которая показывает работу оператора разыменования: она изменяет значение переменной через указатель.

На вход подаются:

  • Целое число — начальное значение переменной
  • Целое число — новое значение, которое нужно присвоить через указатель

Ваша программа должна:

  1. Объявить целочисленную переменную с именем temperature и инициализировать её первым введённым значением
  2. Создать указатель с именем tempPtr, который указывает на переменную temperature
  3. Вывести исходное значение, разыменовав указатель
  4. С помощью оператора разыменования изменить значение temperature через указатель на второе введённое значение
  5. Вывести новое значение, снова разыменовав указатель

Используйте точно такой формат вывода:

Original value: [original value]
New value: [new value]

Попробуйте сами

#include <iostream>
using namespace std;

int main() {
    // Считать входные значения
    int initialValue, newValue;
    cin >> initialValue;
    cin >> newValue;
    
    // TODO: Напишите ваш код ниже
    // 1. Объявите переменную temperature и инициализируйте её значением initialValue
    // 2. Создайте указатель tempPtr, указывающий на temperature
    // 3. Print original value using pointer dereference
    // 4. Измените значение temperature через указатель, используя newValue
    // 5. Выведите новое значение, используя разыменование указателя
    
    return 0;
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Логика и управление потоком

Потренируйтесь самостоятельно: Онлайн-компилятор C++