Sono rimasto sorpreso quando il seguente programma non si è bloccato.Accesso agli elementi della struttura utilizzando i puntatori
typedef struct _x {
int a;
char b;
int c;
} x;
main() {
x *ptr = 0;
char *d = &ptr->b;
}
Come per la mia comprensione dell'operatore ->
ha una maggiore precedenza su &
operatore. Quindi mi aspettavo che il programma si arrestasse in modo anomalo alla seguente istruzione quando provassimo a dereferenziare il puntatore NULL tr
.
char *d = &ptr->b;
Tuttavia, la dichiarazione &ptr->b
restituisce un indirizzo valido. Qualcuno potrebbe spiegare dove ho sbagliato?
Questo è in qualche modo simile alla macro 'offsetof'. – ruslik