0Pricing
Zig Academy · Lección

Punteros const y alineación

Exprese acceso de solo lectura y disposición en memoria.

Punteros const y alineación es una lección gratuita de Zig Academy en CoddyKit. Esta es la lección 4 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.

Acceso de solo lectura

A menudo querrá compartir un valor, pero prometer que no lo cambiará. Un puntero const concede acceso de lectura e impide las escrituras.

El tipo *const T

Escriba un puntero a datos inmutables como *const T. Puede leer a través de él, pero asignar un valor a su destino produce un error de compilación.

const x: i32 = 5;
const p: *const i32 = &x;

Const se conserva con &

Obtener la dirección de un valor const produce automáticamente un *const T, por lo que el tipo conserva la inmutabilidad.

const v: u8 = 9;
const p = &v; // *const u8

Mutable se convierte implícitamente en const

Un *T se convierte implícitamente en *const T sin restricciones, ya que eliminar el permiso de escritura siempre es seguro. No se permite hacerlo al contrario.

var n: i32 = 1;
const ro: *const i32 = &n;

Por qué preferir const

Aceptar un parámetro *const T indica a quien llama a la función que usted solo leerá, lo que hace que las funciones sean más confiables.

fn show(p: *const i32) void {
    // read only
}

Qué significa la alineación

Cada tipo tiene una alineación: el límite de dirección en el que debe ubicarse. Normalmente, un u32 necesita una dirección divisible entre cuatro.

Consultar con @alignOf

El builtin @alignOf(T) devuelve la alineación requerida de un tipo en bytes, igual que @sizeOf devuelve su tamaño.

const a = @alignOf(u32);

La alineación en el tipo

Puede indicar la alineación de un puntero en su tipo mediante align, como en *align(4) u8, para exigir un límite específico.

var p: *align(4) u8 = undefined;

Por qué importa la alineación

El hardware lee más rápido los datos alineados, y algunas CPU producen un fallo al acceder a datos desalineados. Zig controla la alineación en el tipo para mantener la corrección.

Alineación superior e inferior

Un puntero puede garantizar una alineación más estricta que la predeterminada, pero no puede debilitarla sin una conversión explícita como @alignCast.

Const y align en conjunto

Ambos conceptos se combinan de forma natural: un *const align(8) T es un puntero de solo lectura que también garantiza un límite de ocho bytes.

Comprobación rápida

Escribe una función que solo necesita leer el valor al que apunta un puntero. ¿Qué tipo de parámetro lo expresa mejor?

Resumen

Un puntero *const T comparte datos en modo de solo lectura y se convierte implícitamente desde *T, mientras que la alineación, visible mediante @alignOf y align(n), mantiene el acceso a la memoria correcto y rápido. 🎯

Preguntas frecuentes

¿La lección «Punteros const y alineación» es gratis?

Sí — el texto completo de «Punteros const y alineación» 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 const y alineación»?

Exprese acceso de solo lectura y disposición en memoria. 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 4 de 4.

¿Cuánto tiempo toma la lección «Punteros const y alineación»?

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. Punteros a un solo elemento con *T
  2. Desreferenciar con ptr.*
  3. Punteros a varios elementos [*]T
  4. Punteros const y alineación
← Volver a Zig Academy