Short answer: they are allocated with the order as they declared in the struct.
Example:
#include <stdio.h>
#include <string.h>
struct student
{
int id1;
int id2;
char a;
char b;
float percentage;
};
int main()
{
int i;
struct student record1 = {1, 2, 'A', 'B', 90.5};
printf("size of structure in bytes : %d
",
sizeof(record1));
printf("
Address of id1 = %u", &record1.id1 );
printf("
Address of id2 = %u", &record1.id2 );
printf("
Address of a = %u", &record1.a );
printf("
Address of b = %u", &record1.b );
printf("
Address of percentage = %u",&record1.percentage);
return 0;
}
Output:
size of structure in bytes : 16
Address of id1 = 675376768
Address of id2 = 675376772
Address of a = 675376776
Address of b = 675376777
Address of percentage = 675376780
The pictorial representation of above structure memory allocation is given below. This diagram will help you to understand the memory allocation concept in C very easily.
Further reading: check out here (also the source for the above example) for C – Structure Padding
and Structure dynamic memory allocation in C
.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…