Указатели на несколько элементов [*]T
Обращайтесь к последовательности элементов.
«Указатели на несколько элементов [*]T» — бесплатный урок Zig Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Zig Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Zig Academy содержит 4 уроков всего.
Части этого урока еще не переведены и отображаются на английском.
Pointing at a Run
Sometimes a pointer addresses not one value but the start of a sequence of values laid out in memory. 🧱
The [*]T Type
A many-item pointer is written [*]T. The star inside the brackets means it points at an unknown number of T values in a row.
var run: [*]u8 = undefined;No Length Attached
Unlike a slice, a many-item pointer carries no length. You alone must know how many elements are safe to touch.
Index Like an Array
You can index a many-item pointer with brackets, so run[2] reaches the third element by stepping forward in memory.
const third = run[2];Pointer Arithmetic
Adding to a many-item pointer moves it by whole elements, so run + 1 points one T further along, not one byte.
const next = run + 1;Single vs Many
A *T points at exactly one value and cannot be indexed; a [*]T points at many and supports indexing and arithmetic.
Where They Come From
Many-item pointers often appear when talking to C, which passes a bare pointer to a buffer with the length tracked separately.
No Bounds Checks
Because the length is unknown, indexing a many-item pointer is not bounds-checked. Reading too far is undefined behavior.
Prefer Slices
When you control the code, a slice []T is safer because it bundles the length. Reach for [*]T mainly at C boundaries.
From Pointer to Slice
Once you know the count, attach a length with ptr[0..n] to turn a many-item pointer into a safe, bounds-checked slice.
const view = run[0..n];Sentinel Variants Exist
Zig also has sentinel-terminated forms like [*:0]u8, a pointer whose run ends at a known value such as a zero byte.
var cstr: [*:0]const u8 = "hi";Quick Check
Compare a slice []T with a many-item pointer [*]T. What does the many-item pointer lack?
Recap
A many-item pointer [*]T addresses a run of values, supports indexing and arithmetic, has no length, and is best converted to a slice when possible. 🎯
Часто задаваемые вопросы
Урок «Указатели на несколько элементов [*]T» бесплатный?
Да — полный текст урока «Указатели на несколько элементов [*]T» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Zig Academy, подпишись на CoddyKit PRO. Курс Zig Academy содержит 4 уроков всего.
Чему я научусь в уроке «Указатели на несколько элементов [*]T»?
Обращайтесь к последовательности элементов. Ты практикуешь Zig Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Zig Academy?
Предыдущий опыт не требуется. Zig Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.
Сколько времени занимает урок «Указатели на несколько элементов [*]T»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Zig Academy?
Да. Каждый урок Zig Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Указатели на один элемент с помощью *T
- Разыменование с помощью ptr.*
- Указатели на несколько элементов [*]T
- Константные указатели и выравнивание