Есть много примеров undefined/неуказанного поведения при выполнении арифметики указателя - указатели должны указывать внутри одного и того же массива (или один за концом) или внутри одного и того же объекта, ограничения на то, когда вы можете делать сравнения/операции на основе вышеизложенного и т.д.
Является ли следующая операция корректной?
int* p = 0;
p++;