Punteros en Zig
Un puntero de un solo elemento duplica un contador en el lugar; .* es la desreferencia.
const std = @import("std");
fn double(x: *i32) void {
// x.* reaches through the pointer to the value.
x.* *= 2;
}
pub fn main() void {
var count: i32 = 21;
double(&count);
std.debug.print("doubled in place: {d}\n", .{count});
const ptr = &count;
std.debug.print("read through a pointer: {d}\n", .{ptr.*});
}
Cómo funciona
x: *i32es un puntero a exactamente un entero — sin aritmética, sin null.x.* *= 2escribe a través del puntero;&counttoma la dirección.- Un
const ptrigual puede leerptr.*— el const es sobre la vinculación.
Palabras clave y builtins usados aquí
constfni32pubvarvoid
El intento, en números
- Líneas
- 15
- Caracteres a escribir
- 311
- Tokens
- 92
- Ritmo de tres estrellas
- 70 tpm
Al ritmo de tres estrellas de 70 tokens por minuto, este intento toma unos 79 segundos.
Paso 2 de 3 en Opcionales y punteros; paso 11 de 27 en Fundamentos del lenguaje.