Подтвердить что ты не робот

Скобки нужны для того, чтобы получить адрес элемента struct от указателя на структуру, как в "& (s-> var)" vs "& s-> var"?

У меня есть struct str *s;

Пусть var - переменная в s. Является ли &s->var равным &(s->var)?

4b9b3361

Ответ 1

Поведение, да, они эквивалентны, поскольку оператор доступа к члену -> имеет более высокий приоритет, чем оператор address-of &.

Считываемость, вторая &(s->var) более читаема, чем &s->var, и она должна быть предпочтительнее первой формы. Со второй формой &(s->var) вам не нужно будет догадываться, что она на самом деле делает, поскольку вы знаете, что выражение в круглых скобках всегда оценивается в первую очередь. Если есть сомнения, используйте круглые скобки.

Ответ 3

Да, потому что оператор разыменования указателя -> имеет более высокий приоритет, чем оператор адреса &.