AnyCompiler

Arrays

Un array de C tiene un tamaño fijo establecido en el momento de su creación sin ninguna forma incorporada de crecer, y — a diferencia de todos los demás lenguajes de este sitio — no tiene una propiedad length propia. sizeof(array) / sizeof(array[0]) es el truco estándar para recuperar el número de elementos de un array, y solo funciona mientras el array todavía esté en el scope como array (no una vez que haya decaído a un pointer, lo cual cubre la siguiente lección).

#include <stdio.h>

int main() {
    int numbers[5] = {4, 8, 15, 16, 23};
    int sum = 0;
    for (int i = 0; i < 5; i++) {
        sum += numbers[i];
    }
    printf("%d\n", sum);
    printf("Array size: %zu\n", sizeof(numbers) / sizeof(numbers[0]));
    return 0;
}
Output
66
Array size: 5

C tampoco hace verificación de límites: leer o escribir más allá del final de un array no genera un error — simplemente lee o corrompe cualquier memoria que esté ahí. Eso es undefined behavior, y es uno de los bordes más afilados de C.

A continuación: pointers — la idea única sobre la que se construye el resto de este curso.

Practice exercise

Dado int numbers[4] = {4, 8, 15, 16}, suma todos sus elementos con un for loop e imprime el total.