Если я делаю *ptr[x]
, это эквивалентно *(ptr[x])
или (*ptr)[x]
?
Порядок операций для разыменования и скобки-ref в C
Ответ 1
*(ptr[x])
Смотрите таблицу приоритетов в Википедии, или, для более подробной таблицы, эту специфическую таблицу C/С++.
Ответ 2
В C все операторы постфикса имеют более высокий приоритет, чем префиксные операторы, а префиксные операторы имеют более высокий приоритет, чем операторы infix. Таким образом, его *(ptr[x])
Ответ 3
Использование движения против часовой стрелки для анализа и анализа этого простого примера
1. starting with ptr, work in counter-clockwise until you hit asterisk operator 2. asterisk, in counter-clockwise until you hit subscript operator 3. we arrive here, at subscript operator [x]
Так как []
имеет более высокий приоритет, чем звездочка в соответствии с этим table, это делает его *(ptr[x])