К указателям применяются только две арифметические операции – сложение и вычитание.
Пример:
Пусть p1 – указатель на целое, содержащий значение 2000. Пусть целые имеют длину 2 байта после выражения p1++ содержимое p1 станет 2002, а не 2001. Каждый раз при увеличении p1 указатель будет указывать на следующее целое – это справедливо и для уменьшения. Каждый раз, когда указатель увеличивается, он указывает на следующий элемент базового типа, а когда уменьшается – на предыдущий элемент. В случаи указателей на символы это приводит к обычной арифметики. Все остальные указатели увеличиваются или уменьшаются на длину базового типа. Можно добавлять или вычитать из указателей целые числа.
Пример: p1=p1+9
Это выражение приводит к тому, что указатель p1 указывает на 9-й элемент по сравнению с элементом, на который он указывал до присвоения. Помимо добавления или вычитания указателей и целых чисел. Единственную операцию, которую можно выполнить с указателем, это вычитание одного указателя из другого. В большинстве случаев вычитание одного указателя из другого имеет смысл только тогда, когда оба указателя указывают на один объект, как правило, массив. В результате вычитания получается число элементов базового типа, находящихся между указателями. Кроме вышеуказанных не существует других арифметических операций применимых к указателям.
Нельзя умножать или делить указатели, нельзя складывать указатели, нельзя применять битовый сдвиг, нельзя добавлять или вычитать типы float, double.