Это зависит от относительного приоритета []
против одноместной *
(бывший выше), и тот факт, что если p
(или оценивает) указатель и n
имеет целочисленный тип, тогда p[n]
означает то же, что и *(p + n)
. Таким образом, вы можете превратить ваше отправное выражение в соответствии со следующими шагами, делая повторное использование, в обоих направлениях, эта идентичность:
*(*(p+1)+1)[7]
- ==
*((*(p+1)+1)[7])
(Добавленные скобки выражают приоритет оператора в явном виде.)
- ==
*((p[1]+1)[7])
- ==
*(*((p[1]+1)+7))
- ==
*(*(p[1]+1+7))
- ==
*(*(p[1]+8))
- ==
*(p[1][8])
- ==
*(p[1][8] + 0)
- ==
p[1][8][0]
Как вы определяете р? – Elipzer
Postfix '[]' имеет более высокий приоритет, чем унарный '*'. – EOF
Забыл добавить, что @Elipzer. Это 'char * p [2] [3]'. Благодарю. – YoTengoUnLCD