Acceso a los elementos

Cuando declaramos un array:

 const a_numbers = [_]u8{ 5, 4, 3, 21, 13 };

a_numbers apunta a una estructura de 5 posiciones como esta:

5

4

3

21

13

índices:

0

1

2

3

4

Para acceder a los diferentes elementos de un array, usamos los índices que empiezan a partir del 0. Esto es así porque un índice realmente representa un desplazamiento (offset) de i posiciones, contando desde el inicio de un array.

Aquí tienes unas fórmulas para aclarar estos conceptos:

Número Elemento = índice + 1

Índice = Número Elemento - 1

Índice final = Longitud del Array - 1

Si te preguntas ¿cuánta memoria ocupa un array del tipo u8 de 5 posiciones?

5 elementos * 8 bits = 40 bits

Seguro que te suena que 8 bits se denominan 1 byte, así que también podemos decir que un array de longitud 5 del tipo u8 ocupa 5 bytes.

Si queremos acceder a un elemento del array usamos el índice “apuntando” a la posición deseada. Veamos cómo acceder a la primera y la última posición:

array_position.zig

const std = @import("std");

const print = std.debug.print;

pub fn main() void {

   const a_numbers = [_]u8{ 8, 5, 10, 6, 12 };

    const n_first_position = 0;

    const n_last_position = a_numbers.len;

    print("El primer elemento de a_numbers está en el índice [{}]: {}\n", 

     .{ n_first_position, a_numbers[n_first_position] });

    print("El último elemento de está en el índice [{}]: {}\n", 

     .{ n_last_position, a_numbers[n_last_position] });

}

$ zig run array_position.zig

array_position.zig:11:98: error: index 5 outside array of length 5

¿Sabrías decir dónde está el error?

El error que hemos cometido es bastante típico. Hemos confundido la longitud con la última posición. Como los índices empiezan en 0, la última posición termina en longitud del array - 1, tal y como hemos señalado antes. Con poner:

    const n_last_position = a_numbers.len - 1;

… se soluciona el problema y Zig ejecuta correctamente el programa:

$ zig run array_position.zig

El primer elemento de a_numbers está en el índice [0]: 8

El último elemento de está en el índice [4]: 12

Arrays
Arrays mutables
© 2025 Zen of Zig