Ответ 1
sizeof(((struct A*)0)->arr);
Вкратце, нарисуйте нулевой указатель на тип struct A*
, но поскольку операнд sizeof
не оценивается, это законно и позволяет получить размер элементов структуры без создания экземпляра структуры.
В принципе, мы притворяемся, что его экземпляр существует по адресу 0 и может использоваться для определения смещения и sizeof
.
Чтобы подробнее разобраться, прочитайте эту статью: