Да, вот как это должно работать. Добавление 1 к указателю в массиве фактически приведет к переходу к следующему элементу (C корректирует адрес памяти на правильную величину, размер структуры).
Единственный раз, когда это не сработает, это когда вы заходите слишком далеко. Указатель действителен (для разыменования и арифметики указателей), только если он указывает на массив или (только для арифметики) на него. Итак:
int x[10];
int *px = &(x[9]); // Points to last element, okay to dereference.
px++; // Points one beyond, still okay for aritmetic.
px++; // Don't use this for anything.
считается неопределенным поведением, если вы попытаетесь использовать указатель впоследствии.