typestar

sizeof y alineación en C

sizeof mide almacenamiento, y un struct suele ser más grande que la suma de sus campos.

#include <stddef.h>
#include <stdio.h>

struct Padded {
    char flag;
    int count;
    char label;
};

void layout(void) {
    printf("char %zu int %zu double %zu\n",
           sizeof(char), sizeof(int), sizeof(double));
    printf("struct %zu, fields %zu\n",
           sizeof(struct Padded), sizeof(char) * 2 + sizeof(int));
    printf("offsets %zu %zu %zu\n",
           offsetof(struct Padded, flag),
           offsetof(struct Padded, count),
           offsetof(struct Padded, label));
    printf("alignment %zu\n", _Alignof(struct Padded));
}

Cómo funciona

  1. sizeof se evalúa al compilar y produce un size_t.
  2. El relleno alinea cada miembro a su propio requisito.
  3. offsetof te muestra exactamente dónde quedan los huecos.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
20
Caracteres a escribir
470
Tokens
122
Ritmo de tres estrellas
90 tpm

Al ritmo de tres estrellas de 90 tokens por minuto, este intento toma unos 81 segundos.

Escribe este fragmento

Paso 1 de 4 en Valores y almacenamiento; paso 27 de 35 en Fundamentos del lenguaje.

← Anterior Siguiente →