Me sorprendió cuando el siguiente programa no se bloqueó.Acceso a los elementos de la estructura con punteros
typedef struct _x {
int a;
char b;
int c;
} x;
main() {
x *ptr = 0;
char *d = &ptr->b;
}
Según mi entendimiento que el operador ->
tiene mayor prioridad sobre &
operador. Así que esperaba que el programa fallara en la declaración siguiente cuando intentemos eliminar la referencia del puntero NULL tr
.
char *d = &ptr->b;
Pero la afirmación &ptr->b
evalúa a una dirección válida. ¿Podría alguien explicar por favor dónde estoy equivocado?
Esto es de alguna manera similar a la macro 'offsetof'. – ruslik