#include <stdio.h>
#pragma pack(1)
typedef struct
{
char name[10];
int age;
int class;
char grade;
}stud_s;
int main(void)
{
stud_s s1= {"john" ,10, 10, 'A'};
printf("%ld \n",sizeof(stud_s));
return 0;
}
В вышеуказанной структуре имя зарезервировано 10 байт. И имя «john» равно 4 байтам, поэтому, когда я использую #pragma
, размер структуры должен быть 13. Вместо этого размер привел к 19 байтам. Может ли кто-нибудь взглянуть на мой код? Любая помощь будет оценена по достоинству.Что происходит, когда мы используем прагма-пакет (1)?
Потому что 10 + 4 + 4 + 1 = 19 (по крайней мере, в моей поездке через академию). Размер структуры устанавливается при * компиляции * времени; нет * пробег * время. Упаковано или нет, не имеет никакого значения в этом факте. – WhozCraig
@WhozCraig: путаница заключается в том, что они думают, что, поскольку «john» 'всего 4 байта (а это не так), тогда они будут сохранять 6 байтов в' stud_s :: name'. Таким образом, '19 - 6 = 13', как было предложено в вопросе. –
В этом случае то, что я должен сделать, получает размер структуры как 13. – user3770743