Сумма или разность выражения целочисленного типа и указателя возвращает значение того же типа, что и указатель. Если указатель ссылается на элемент массива, то результат указывает на смещение относительно данного элемента. Если итоговый указатель выходит за пределы массива, то это приводит к неопределенному поведению. Разница между индексами исходного и итогового элементов равна целочисленному выражению: ``` #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 можно сформировать указатель на любой элемент массива, в том числе и на такой, который указывает на несуществующий элемент, следующий за последним элементом (также известный как «слишком дальний указатель»).