0Pricing
Zig Academy · Lección

Punteros optional y ?*T

Combine punteros con optionalidad.

Punteros optional y ?*T es una lección gratuita de Zig Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Zig Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Zig Academy incluye 4 lecciones en total.

Los punteros también pueden ser opcionales

Normalmente, un puntero debe apuntar siempre a un valor válido. Al hacerlo opcional, adquiere una forma legítima de representar que todavía no apunta a nada.

La forma ?*T

El tipo ?*T se interpreta así: un puntero opcional a un T. O bien apunta a un valor real, o bien contiene null.

var node: ?*Node = null;

Un puntero null seguro

Esta es la respuesta de Zig a los punteros null de C. El puntero puede estar ausente, pero el opcional le obliga a comprobarlo antes de desreferenciarlo.

Desenvuélvalo antes de seguirlo

No puede desreferenciar directamente un ?*T. Primero debe desenvolverlo con if u orelse para obtener el puntero normal subyacente.

if (node) |p| {
    use(p.*);
}

La captura proporciona un puntero real

Dentro de la captura de if, el nombre es un *Node normal, listo para desreferenciarse con .* como cualquier puntero no opcional.

if (head) |p| {
    const value = p.*;
}

Ideal para estructuras enlazadas

Los punteros opcionales son ideales para listas enlazadas y árboles, donde un campo next o child es null al final de la cadena.

const Node = struct { next: ?*Node };

null marca el final

Al recorrer una lista, un campo next con valor null indica claramente que ha llegado al último nodo y debe detenerse.

Zig almacena la etiqueta aparte

En los punteros, Zig almacena el estado null en el propio valor del puntero, por lo que un ?*T no ocupa espacio adicional frente a un puntero normal.

Punteros opcionales constantes

Puede combinar solo lectura y opcionalidad: ?*const T es un puntero opcional a través del cual puede leer, pero nunca escribir.

var view: ?*const u8 = null;

Sin fallos inesperados

Como el tipo indica que podría ser null, el compilador no le permitirá olvidar la comprobación, a diferencia de lo que ocurre al desreferenciar un puntero sin procesar de C.

Recorrer una cadena

Un bucle while que captura cada puntero next opcional es la forma idiomática de recorrer una lista hasta que aparece null.

while (cur) |n| {
    cur = n.next;
}

Comprobación rápida

¿Qué describe el tipo ?*Node?

Resumen

Ha aprendido ?*T: un puntero opcional seguro. Desenvuélvalo antes de desreferenciarlo y deje que null marque el final de las estructuras enlazadas. 🔗

Preguntas frecuentes

¿La lección «Punteros optional y ?*T» es gratis?

Sí — el texto completo de «Punteros optional y ?*T» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Zig Academy, actualiza a CoddyKit PRO. El curso de Zig Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Punteros optional y ?*T»?

Combine punteros con optionalidad. Practicas Zig Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Zig Academy?

No se requiere experiencia previa. Zig Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.

¿Cuánto tiempo toma la lección «Punteros optional y ?*T»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Zig Academy?

Sí. Cada lección de Zig Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Declarar tipos optional
  2. Desenvolver de forma segura con if y orelse
  3. Punteros optional y ?*T
  4. null frente a undefined
← Volver a Zig Academy