char *name = &((uint8_t*)&c->car)[1];
получает указатель на поле car структуры c, трактует его как указатель на массив байтов, индексирует второй байт этого массива и берёт его указатель. В итоге мы видим чудесным образом сохранённую строку длиной до двух байт (увы! z-байт тоже надо хранить в C-style строках, а в байте с индексом 0 лежал тэг: итого, два байта неизбежно отлетают под служебные данные, из-за чего 64-битные машины начинают выглядеть чуточку выгоднее), для размещения которой вовсе не потребовалось выделять отдельно память.
Шо то мне подсказывает, что на машинах с big-endianness сие работать не будет, но доступных одноплатников с PowerPC я нигде не смог откопать.
Сделать трёхбайтовые строки можно, но тогда тэг должен лежать в СТАРШЕМ байте, а не в младшем, как сейчас, и будет равен нулю для таких вот спрятанных строк (тогда этот тэг автоматически становится z-байтом). В принципе, ничего страшного нет, просто физические указатели, при записи их в такие структуры, придётся сдвигать вниз на ширину тэга (а при чтении, соотв., выдвигать вверх). Учитывая наличие barrel shift в большинстве современных чипов, это будет ничуть не более дорогая операция, нежели чем наложение битовой маски.