Stavo cercando di capire il riempimento della struttura, quindi ho scritto un semplice programma come scritto di seguito e l'ho eseguito. per chiarire ho fatto due copie di questo programma program1.c e program2.c ed eseguito entrambi insieme per vedere l'indirizzo del membro ma qualcosa di strano si avvicinò Entrambi i programmi mi danno lo stesso risultato, come se avessero esattamente gli stessi indirizzi Voglio sapere cosa succede esattamente internamente?
Program1.c
#include<stdio.h>
struct pad{
short int a[5];
int b;
char c;
} y;
int main()
{
int size = sizeof(y);
printf (" size %d byte",size);
y.b = 10;
printf ("\n address of member 1 is %d \n",&y.a);
printf (" address of member 2 is %d \n",&y.b);
printf (" address of member 3 is %d \n",&y.c);
getch ();
}
Output del programma
size 20 byte
address of member 1 is 4210784
address of member 2 is 4210796
address of member 3 is 4210800
Questo è program2.c
include<stdio.h>
struct pad{
short int a[5];
int b;
char c;
} x;
int main()
{
int size = sizeof(x);
printf (" size %d byte",size);
printf ("\n address of mem 1 is %d \n",&x.a);
printf (" address of mem 2 is %d \n",&x.b);
printf (" address of mem 3 is %d \n",&x.c);
// printf (" size %d byte",size);
getch ();
}
Output del secondo programma
size 20 byte
address of member 1 is 4210784
address of member 2 is 4210796
address of member 3 is 4210800
Sto usando l'architettura a 32 bit di Windows 7 e Dev-c ++