+ 5
&arr points to entire array so &arr+1 points to after the whole array (like 2d array which points to next row)
arr points to the first element of array so arr+1 points to next element (like next value in same colomn).
So (arr+1) points second element and *(arr+1) returns 41
&arr+1 points to after arr array so ptr points to same and (ptr-1) points to last element of arr array because it's assigned ptr = &arr + 1;
So *(ptr-1) returns 42.
Hope it helps..
+ 3
I made a little test. It's actually iterating backwards.
https://code.sololearn.com/cqgglI9mS537/?ref=app
+ 2
arrÂŹÂĄ--------------ÂĄ
| 40 | 41 | 42 | x | x | x |
!Š______Š
(&arr+1)=(arr + sizeof arr)
in addition to what Jayakrishnađźđł said, you must use some peace of paper to better anderstand pointers hh