Можно выполнять некоторые операции с указателями унарные операции: инкремент и декремент. При выполнении операций ++ и — значение указателя увеличивается или уменьшается на длину типа, на который ссылается используемый указатель.
Пример 1
int *ptr, a[10];
ptr=&a[5];
ptr++;      /* равно адресу элемента a[6] */
ptr--;      /* равно адресу элемента a[5] */
В бинарных операциях сложения и вычитания могут участвовать указатель и величина типа int. При этом результатом операции будет указатель на исходный тип, а его значение будет на указанное число элементов больше или меньше исходного.
Пример 2
int *ptr1, *ptr2, a[10];
int i=2;
ptr1=a+(i+4);   /*  равно адресу элемента a[6] */
ptr2=ptr1-i;    /*  равно адресу элемента a[4] */
В операции вычитания могут участвовать два указателя на один и тот же тип. Результат такой операции имеет тип int и равен числу элементов исходного типа между уменьшаемым и вычитаемым, причем если первый адрес младше, то результат имеет отрицательное значение.
Пример 3
int *ptr1, *ptr2, a[10];
int i;
ptr1=a+4;
ptr2=a+9;
i=ptr1-ptr2;  /*   равно 5   */
i=ptr2-ptr1;  /*   равно -5  */
Значения двух указателей на одинаковые типы можно сравнивать в операциях ==, !=, <, <=, >, >= при этом значения указателей рассматриваются просто как целые числа, а результат сравнения равен 0 (ложь) или 1 (истина).
Пример 4
int *ptr1, *ptr2, a[10];
ptr1=a+5;
ptr2=a+7;
if (prt1>ptr2) a[3]=4;
В данном примере значение ptr1 меньше значения ptr2 и поэтому оператор a[3]=4 не будет выполнен.