Вы запускаете цикл, пока не встретите \0
, но ваш массив никогда не был \0
завершен.
int x[] = {6,1,2,3,4,5};
создает массив, который не \0
завершается. Вам придется явно добавить \0
в качестве последнего элемента.
Поскольку массив не \0
завершен, циклы while()
работают до тех пор, пока не встретится случайный \0
. Технически, это неопределенное поведение , потому что вы читаете содержимое памяти, которое не выделено для вашей переменной.
Предлагаемое решение:
int x[] = {6,1,2,3,4,5,0};
while(*p != 0)