使用 *T 表示单项指针
准确指向一个值。
使用 *T 表示单项指针 是 CoddyKit 上的免费 Zig Academy 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Zig Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Zig Academy 课程共包含 4 节课。
本课时的部分内容尚未翻译,以英文显示。
A Pointer Points
A pointer holds the address of a value living somewhere else in memory, instead of holding the value itself. 📍
The *T Type
A single-item pointer has the type *T, where T is what it points at. So *i32 means a pointer to one i32 value.
var p: *i32 = undefined;Take an Address
Use the & operator in front of a variable to get a pointer to it. The result is the address where that value is stored.
var x: i32 = 10;
const p = &x;One Value Only
A single-item pointer guarantees it refers to exactly one value, not an array. The compiler tracks that for you.
Pointers Have a Size
A pointer is just an address, so its size is the machine word, not the size of T. Pointing at a huge struct still costs one address.
Mutable by Default
A plain *T lets you both read and write the value it points to. You will add const later to make it read-only.
var n: i32 = 1;
const p: *i32 = &n;Pointers Share, Not Copy
Passing a pointer to a function shares the original value, so changes made through it are visible to the caller.
fn bump(p: *i32) void {
p.* += 1;
}Address of a const
Taking &x on a const gives you a *const i32, because Zig will not let you write through a pointer to immutable data.
const x: i32 = 5;
const p = &x;Pointers Are Never Null
An ordinary Zig pointer can never be null. If a value might be missing you must use an optional pointer like ?*T.
Type Inference Helps
When you write const p = &x, Zig infers the pointer type from x, so you rarely have to spell out *i32 by hand.
var score: u8 = 42;
const p = &score;Why Use Pointers
Pointers let you modify a value in place and avoid copying large data, which is core to Zig's explicit low-level control.
Quick Check
You want a function to change a caller's variable. What type should the parameter be?
Recap
A single-item pointer *T holds the address of exactly one value, is taken with &, is never null, and lets you share data instead of copying it. 🎯
常见问题解答
「使用 *T 表示单项指针」课时是免费的吗?
是的 — 「使用 *T 表示单项指针」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Zig Academy 课程的其余内容,请升级到 CoddyKit PRO。 Zig Academy 课程共包含 4 节课。
「使用 *T 表示单项指针」这节课中我会学到什么?
准确指向一个值。 你通过在浏览器中直接运行的动手代码来练习 Zig Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Zig Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Zig Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。
「使用 *T 表示单项指针」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Zig Academy 课中编写并运行代码吗?
能。每节 Zig Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 使用 *T 表示单项指针
- 使用 ptr.* 解引用
- 多项指针 [*]T
- 常量指针与对齐