Menu
Coddy logo textTech

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

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

Теперь, когда вы можете получить pointer на variable, вам нужно узнать, как получать доступ к значению по этому memory address и изменять его. Именно здесь оператор dereference (*) becomes необходимым.Оператор dereference * используется для доступа к значению, хранящемуся по memory address, на который pointing pointer. Когда вы помещаете * перед pointer variable, он «следует» по address и дает вам фактическое значение, хранящееся там.Помните, что оператор взятия адреса (&) используется для получения адреса памяти переменной, в то время как оператор разыменования (*) используется для доступа к значению по этому адресу.
int number = 42;
int* ptr = &number;  // ptr хранит адрес number
int value = *ptr;    // value теперь содержит 42
Вы также можете использовать оператор dereference, чтобы изменить original variable through pointer. Когда вы присваиваете новое значение *ptr, вы на самом деле изменяете значение, хранящееся в этой ячейке памяти:
*ptr = 100;  // Изменяет number на 100
// number теперь 100, даже хотя мы изменили его через ptr
Этот косвенный доступ — это то, что делает указатели настолько мощными: вы можете читать и изменять переменные из любого места вашей программы, пока у вас есть `pointer` на них.
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Проверьте себя

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

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