Сумма или разность выражения целочисленного типа и указателя возвращает значение того же типа, что и указатель. Если указатель ссылается на элемент массива, то результат указывает на смещение относительно данного элемента. Если итоговый указатель выходит за пределы массива, то это приводит к неопределенному поведению. Разница между индексами исходного и итогового элементов равна целочисленному выражению:
```
#include <stdio.h>
int main(int argc, char *argv[])
{
int arr[100];
int *p1_arr = arr[40];
int *p2_arr = p1_arr + 20; // указывает на arr[60]
printf("%td\n", p2_arr - p1_arr); // выводит 20
return 0;
}
```
В языке C можно сформировать указатель на любой элемент массива, в том числе и на такой, который указывает на несуществующий элемент, следующий за последним элементом (также известный как «слишком дальний указатель»).