Снова получить указатель вместо значения:
Обычно используют арифметику указателей, когда хотят снова получить указатель. Чтобы получить указатель при использовании индекса массива: вы 1) вычисляете смещение указателя, затем 2) получаете значение в этой ячейке памяти, затем 3) вам нужно использовать &, чтобы получить адрес снова. Это более типичный и менее чистый синтаксис.
Пример 1: Допустим, вам нужен указатель на 512-й байт в буфере
char buffer[1024]
char *p = buffer + 512;
Чище, чем:
char buffer[1024];
char *p = &buffer[512];
Пример 2: Более эффективный strcat
char buffer[1024];
strcpy(buffer, "hello ");
strcpy(buffer + 6, "world!");
Это чище, чем:
char buffer[1024];
strcpy(buffer, "hello ");
strcpy(&buffer[6], "world!");
Использование арифметики указателей ++ в качестве итератора:
Увеличение указателей с помощью ++ и уменьшение с помощью - полезно при итерации по каждому элементу в массиве элементов. Это чище, чем использование отдельной переменной, используемой для отслеживания смещения.
Вычитание указателя:
Вы можете использовать вычитание указателя с арифметикой указателя. В некоторых случаях это может быть полезно, чтобы получить элемент до того, на который вы указываете. Это можно сделать и с помощью подписчиков массива, но это выглядит очень плохо и запутанно. Особенно программисту на питоне, где дается отрицательный индекс для индексации чего-либо из конца списка.