Menu
Coddy logo textTech

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

Часть раздела Логика и управление потоком путешествия по 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]

Шпаргалка

Оператор разыменования * используется для доступа к значению, хранящемуся по адресу памяти, на который указывает указатель:

int number = 42;
int* ptr = &number;  // ptr хранит адрес number
int value = *ptr;    // value теперь содержит 42

Вы также можете использовать оператор разыменования для изменения исходной переменной через указатель:

*ptr = 100;  // Изменяет number на 100
// number теперь равно 100, хотя мы изменили его через ptr

Этот косвенный доступ позволяет вам читать и изменять переменные из любого места вашей программы, пока у вас есть указатель на них.

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

#include <iostream>
using namespace std;

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

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

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