Хорошо, давайте начнем. Указатель хранит адрес памяти и дает звезду (*), прежде чем переменная-указатель будет обозначать значение этого адреса памяти.
int*ptr=arr;
В приведенной выше строке вы скопировали адрес первого индекса массива (обр) в указатель ptr. Таким образом, для первой печати значение указателя ptr - это адрес первого индекса массива, который означает arr [0].
Затем вторая строка:
*ptr++=-1;
Здесь вы пишете увеличивая значение ptr первым, так как ptr представляет адрес первого индекса массива, таким образом он будет представлять адрес второго индекса массива (arr [1]) в следующем операторе. но, поскольку он будет увеличиваться при установке значения -1, он будет установлен в позицию массива 0 (arr [0]).
Затем строка ниже:
*++ptr=-2;
Здесь вы предварительно увеличивая значение ptr, оно будет указывать адрес 3-го индекса массива (arr [2]) и, таким образом, будет устанавливать значение arr [2] равным -2.
Затем следующая строка:
(*ptr)++;
Здесь вы увеличиваете значение адреса ptr, так как в этот момент ptr указывает значение arr [2], поэтому оно будет увеличивать значение arr [2] на 1.
Дайте мне знать, если вы не понимаете какую-либо часть. Удачного кодирования!