Эти фокусы, которые могут ломать голову тем, кто читает код, не надежны. Они не соответствуют стандарту и компилятор может оптимизировать код и вызвать его сбой. В документации указано, что каждое значение типа указатель является одним из следующих:* указатель на объект или функцию (в этом случае говорят, что указатель указывает на объект или функцию), или* указатель за пределами объекта, или* значение null-указателя для данного типа, или* недопустимое значение указателя. Таким образом, ваш указатель arr на самом деле является недопустимым значением указателя перед циклом. Кроме того, там же написано: Любое другое использование недопустимого значения указателя имеет определенное реализацией поведение. Искусственный интеллект, как и всегда, генерирует бред. Он не является базой знаний или поисковой системой, а всего лишь моделью, которая пытается создать текст, похожий на текст из обучающего набора. Если что-то многократно встречается в нем слово в слово, то может повезти. Если ваш вопрос даже немного не отвечается первыми результатами поиска в Google, вам больше всего не повезло. Редактирование: Я немного не правильно написал. Это делается "не рекомендуется", а не "небезопасно". Генерируемый код не является переносимым. Если ваш компилятор с определенными флагами работает с ним, в общем, можно использовать. Но лучше этого не делать.