Curraleiro
Membro
Boas,
Alguém me pode explicar este fenómeno?
e eis o output:
Agradeço quaiquer sugestões para me ajudar a compreender isto.
Nota: Para quem não percebe o que se está a passar, ambas as estrutura, de acordo com os meus conhecimentos e de acordo com as variaveis que cada uma contém, deviam ocupar apenas 14 bytes. No entanto uma ocupa 16 outra ocupa 20. Porquê?
Alguém me pode explicar este fenómeno?
Código:
#include <stdio.h>
#include <stdlib.h>
int main() {
struct a {
char s1[5];
int i;
char s2[5];
};
struct b {
int i;
char s1[5];
char s2[5];
};
struct a va[10];
struct b vb[10];
printf("\n\n\n");
printf("struct a (%lu) {\n\tchar s1[5](%lu);\n\tint i(%lu);\n\tchar s2[5](%lu);\n};\n\n",
(long unsigned)sizeof(va[0]), (long unsigned)sizeof(va[0].s1), (long unsigned)sizeof(va[0].i) , (long unsigned)sizeof(va[0].s2) );
printf("struct b (%lu) {\n\tint i(%lu);\n\tchar s1[5](%lu);\n\tchar s2[5](%lu);\n};\n\n",
(long unsigned)sizeof(vb[0]), (long unsigned)sizeof(vb[0].i), (long unsigned)sizeof(vb[0].s1) , (long unsigned)sizeof(vb[0].s2) );
printf("sizeof(va) (%lu)\n", (long unsigned)sizeof(va));
printf("sizeof(vb) (%lu)\n", (long unsigned)sizeof(vb));
return 0;
}
Código:
%%%%$ ./main
struct a (20) {
char s1[5](5);
int i(4);
char s2[5](5);
};
struct b (16) {
int i(4);
char s1[5](5);
char s2[5](5);
};
sizeof(va) (200)
sizeof(vb) (160)
Nota: Para quem não percebe o que se está a passar, ambas as estrutura, de acordo com os meus conhecimentos e de acordo com as variaveis que cada uma contém, deviam ocupar apenas 14 bytes. No entanto uma ocupa 16 outra ocupa 20. Porquê?
Última edição: