指针 (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。通常用于裸机编程。

另请参阅: