Доступ к элементам структуры с помощью указателей

Я был удивлен, когда следующая программа не аварийно завершилась.

typedef struct _x {
  int a;
  char b;
  int c;
} x;

main() {
  x *ptr = 0;
  char *d = &ptr->b;
}

Насколько я понимаю, оператор -> имеет более высокий приоритет перед & оператор. Поэтому я ожидал, что программа выйдет из строя при выполнении следующего оператора, когда мы попытаемся разыменовать NULL-указатель tr .

char *d = &ptr->b; 

Но оператор & ptr-> b оценивается как действительный адрес. Не могли бы вы объяснить, в чем я ошибаюсь?

5
задан Dariusz 28 May 2014 в 07:37
поделиться