Еще раз об указателях
При классическом способе работе внутри функции с массивом переданным по указателю
обход элементов массива делается так
p или *(p+i)
Почему оператор *p=*(p+1); выполненный i раз не эквивалентен *(p+i)?
Если p - указатель, то *p - значение, хранящееся в ячейке памяти, которую адресует p. Так, по индукции, *(p+1) - значение, хранящееся в следующей за адресуемой указателем p ячейке памяти. Таким образом, выполнение i раз этого кода приведёт к многократному присвоению содержимого p+1`й ячейки памяти p`той, то есть, например, первому элементу массива i раз будет присвоено значение второго элемента.
Цитата: eugrita
Почему оператор *p=*(p+1); выполненный i раз не эквивалентен *(p+i)?
Хороший вопрос :) Иногда бывает полезно оператор *p=*(p+1) i раз выполнить. Бывает хочется вместо этого написать *(p+i), но нельзя.