Как минимум пара проблем:
1) ar
- это массив указателей - вы присваиваете ему целые числа (и печатаете элементы как целые).Я получаю предупреждения об этом как от GCC, так и от MSVC.
2) объявление ar
является «неполным типом», так как не имеет указанного размера.MSVC отказывается от ссылки, говоря, что не может разрешить символ ar
, чего я и ожидал.GCC делает ссылку, выдавая предупреждение:
warning: array 'ar' assumed to have one element
Я предпочитаю поведение MSVC в этом случае.
В случае GCC вы получаете доступ к данным для 3 или 4 элементов массива только с 1элемент реально существует, поэтому вы обращаетесь к памяти, которая не принадлежит объекту, что является неопределенным поведением.Это приведет к повреждению памяти, сбою или, по-видимому, работе - даже если программа некорректна (как в вашем тесте).