Menu
Coddy logo textTech

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

Часть раздела Logic & Flow путешествия по C на Coddy — урок 4 из 63.

Теперь, когда вы знаете, как хранить адреса в указателях, вам нужно научиться получать доступ к фактическому значению, хранящемуся по этому адресу памяти. Оператор разыменования (*) позволяет вам «следовать» по указателю, чтобы получить значение, на которое он указывает.

Когда вы помещаете оператор * перед переменной-указателем, он обращается к значению, хранящемуся по адресу памяти, который содержит указатель. Представьте это как фразу «дай мне то, что находится внутри комнаты по этому адресу».

int age = 25;
int *ptr = &age;
printf("%d", *ptr);    // Выводит 25 — значение age

Важно понимать, что звездочка (*) имеет два разных значения в языке C. При объявлении указателя, такого как int *ptr;, звездочка указывает на то, что ptr является указателем. При использовании с существующим указателем, таким как *ptr, она разыменовывает указатель для доступа к значению, на которое он указывает.

Оператор разыменования важен, так как он завершает цикл работы с указателями: вы можете сохранить адрес в указателе с помощью &, а затем получить значение по этому адресу с помощью *. Это позволяет вам косвенно обращаться к переменным и изменять их через их адреса в памяти.

challenge icon

Задание

Легко

Напишите программу на языке C, которая демонстрирует полный рабочий процесс с указателями: объявление, присваивание адреса и разыменование. Ваша программа должна:

  1. Объявить целочисленную переменную с именем value и инициализировать ее значением 75
  2. Объявить переменную с плавающей точкой с именем price и инициализировать ее значением 19.99
  3. Объявить указатель на целое число с именем value_ptr
  4. Объявить указатель на число с плавающей точкой с именем price_ptr
  5. Использовать оператор взятия адреса для присвоения адреса value указателю value_ptr
  6. Использовать оператор взятия адреса для присвоения адреса price указателю price_ptr
  7. Использовать оператор разыменования для вывода значения value через value_ptr
  8. Использовать оператор разыменования для вывода значения price через price_ptr ровно с 2 знаками после запятой

Ваш вывод должен отображать разыменованные значения в следующем формате:

Value through pointer: 75
Price through pointer: 19.99

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

Шпаргалка

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

int age = 25;
int *ptr = &age;
printf("%d", *ptr);    // Выводит 25 - значение age

Звездочка (*) имеет два разных значения в языке C:

  • В объявлениях, таких как int *ptr; — указывает на то, что ptr является указателем
  • С существующими указателями, такими как *ptr — разыменовывает указатель для доступа к значению, на которое он указывает

Оператор разыменования завершает цикл работы с указателями: сохраните адрес с помощью &, а затем извлеките значение по этому адресу с помощью *.

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

#include <stdio.h>

int main() {
    // TODO: Напишите свой код здесь
    // 1. Объявите и инициализируйте переменные
    // 2. Объявите указатели
    // 3. Присвойте адреса указателям
    // 4. Выведите разыменованные значения
    
    return 0;
}
quiz iconПроверьте себя

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

Все уроки раздела Logic & Flow