指针 (Pointers)
Zig 中的指针与 C 语言类似,但更加安全和明确。
指针类型
- 单项指针 (
*T):指向单个元素的指针。支持解引用语法ptr.*。 - 多项指针 (
[*]T):指向未知数量元素的指针。类似于 C 指针。支持索引语法ptr[i]和指针算术。 - 切片 (
[]T):包含指针和长度的结构。最安全的访问数组数据的方式。
创建指针
使用 & 运算符获取变量的地址。
var x: i32 = 1234;
const ptr = &x; // 类型为 *i32
ptr.* += 1;
volatile
指针可以被标记为 volatile,告诉编译器不要优化掉对该内存地址的读写操作。这通常用于内存映射 I/O。
const mmio_ptr: *volatile u8 = @ptrFromInt(0x12345678);
对齐 (Alignment)
指针类型具有对齐信息。如果转换指针导致对齐要求降低,可能会导致未定义的行为(除非显式处理)。
allowzero
允许指针地址为 0。通常用于裸机编程。
另请参阅:
- Slices (切片)