Скорее всего, вы стали жертвой распространенного заблуждения о том, что «массив - это указатель», т.е. когда вы определяете массив, то, что вы на самом деле получаете, - это обычный указатель, который указывает на какой-то блок памяти, выделенный где-то.В вашем коде вы пытаетесь увеличить этот указатель.
Код не «работает», поскольку в действительности массивы не являются указателями.Массивы - это массивы.Массивы не могут быть увеличены.Там нет такой операции, как «увеличить массив» на языке Си.Фактически, сами по себе массивы в C являются неизменяемыми значениями.В C нет операций, которые могли бы изменить сам массив (можно изменять только отдельные элементы).
Если вы хотите обойти свои массивы, используя технику «скользящего указателя» (это то, что вы на самом деле пытаетесьdo), вам нужно явно создать указатели и заставить их указывать на начальные элементы ваших массивов
char *px = x;
char *py = y;
После этого вы можете увеличивать эти указатели столько раз, сколько хотите.