Ich war überrascht, als das folgende Programm nicht abstürzte.Zugriff auf Strukturelemente mit Hilfe von Zeigern
typedef struct _x {
int a;
char b;
int c;
} x;
main() {
x *ptr = 0;
char *d = &ptr->b;
}
Gemäß meinem Verständnis der ->
Operator hat eine höhere Priorität über &
Betreiber. Ich erwartete also, dass das Programm bei der folgenden Anweisung abstürzt, wenn wir versuchen, den NULL-Zeiger tr
zu dereferenzieren.
char *d = &ptr->b;
Aber die Aussage &ptr->b
ergibt eine gültige Adresse. Könnte jemand bitte erklären, wo ich falsch liege?
Das ist irgendwie ähnlich wie das 'offsetof' Makro. – ruslik