0Pricing
Zig Academy · Урок

Разыменование с помощью ptr.*

Читайте и записывайте данные через указатель.

«Разыменование с помощью ptr.*» — бесплатный урок Zig Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Zig Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Zig Academy содержит 4 уроков всего.

Доступ к значению

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

Синтаксис .*

Zig выполняет разыменование с помощью завершающего .* у указателя. Поэтому ptr.* означает значение, на которое в данный момент указывает ptr.

var x: i32 = 7;
const p = &x;
const v = p.*;

Чтение через указатель

Запись ptr.* в выражении читает значение, на которое указывает указатель, и возвращает обычную копию, которую можно использовать где угодно.

const doubled = p.* * 2;

Запись через указатель

Поместите ptr.* слева от присваивания, чтобы записать новое значение в исходную область памяти.

p.* = 99;

Изменения видны

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

var x: i32 = 1;
const p = &x;
p.* = 5;
// x is now 5

Оператора стрелки нет

В Zig, в отличие от C, нет оператора ->. Читаете вы поле или записываете в него — всегда используется одно и то же разыменование .*.

Сначала разыменование, затем поле

Для указателя на структуру запись p.field работает напрямую: Zig автоматически выполняет разыменование при доступе к полю, поэтому .* здесь не нужен.

const p = &point;
const y = p.y;

Явная запись допустима

При желании можно явно написать p.*.field, но более короткая запись p.field соответствует идиоматике Zig и читается проще.

Const запрещает запись

Если указатель имеет тип *const T, то ptr.* доступен только для чтения; попытка присвоить значение через него приводит к ошибке компиляции.

const x: i32 = 3;
const p = &x;
// p.* = 4; // error

Разыменование в арифметике

Вы можете использовать ptr.* везде, где допустимо значение, в том числе в арифметике. Поэтому p.* + 1 просто означает значение, на которое указывает p, плюс единицу.

const next = p.* + 1;

Распространённая ошибка

Если забыть .*, программа попытается использовать адрес как число, что является ошибкой типа. Zig обнаружит это во время компиляции, а не выполнения.

Быстрая проверка

У вас есть const p = &x, и вы хотите записать новое число в x через p. Что нужно написать?

Повторение

Используйте ptr.*, чтобы читать или изменять значение, на которое указывает указатель; поля структур разыменовываются автоматически, а указатели *const T остаются доступными только для чтения. 🎯

Часто задаваемые вопросы

Урок «Разыменование с помощью ptr.*» бесплатный?

Да — полный текст урока «Разыменование с помощью ptr.*» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Zig Academy, подпишись на CoddyKit PRO. Курс Zig Academy содержит 4 уроков всего.

Чему я научусь в уроке «Разыменование с помощью ptr.*»?

Читайте и записывайте данные через указатель. Ты практикуешь Zig Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Zig Academy?

Предыдущий опыт не требуется. Zig Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.

Сколько времени занимает урок «Разыменование с помощью ptr.*»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Zig Academy?

Да. Каждый урок Zig Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Указатели на один элемент с помощью *T
  2. Разыменование с помощью ptr.*
  3. Указатели на несколько элементов [*]T
  4. Константные указатели и выравнивание
← Назад к Zig Academy