Сначала указатель p
указывает на начало массива t
.Так что это должно быть что-то вроде
p--
|
v
------------------------------------------
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
------------------------------------------
Теперь на
p += 2
p
происходит приращение в соответствии с арифметикой указателя.Так что p
теперь указывает на 3
.
p----------
|
v
------------------------------------------
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
------------------------------------------
p[-1]
совпадает с *(p-1)
.т.е. значение по адресу p-1
.Это значение равно 2
.
------ p[-1] or *(p-1)
|
|
------|-----------------------------------
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
------------------------------------------
После добавления 2
к текущему значению p
, p
теперь будет указывать на 5
.
p------------------
|
v
------------------------------------------
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
------------------------------------------
Итак, когда вы печатаете значение *p
, выводится 5
.