p
сделано так, чтобы оно указывало на элемент, который не отличается от массива из 1 элемента.
То есть, доступ к нескольким последовательным элементам путем увеличения p
равен undefinedповедение .
Чтобы быть действительным, вам нужно указать на 3 последовательных элемента, таких как:
struct my_structure variable[3]; // should be initialized too
Чтобы быть полным, p++
сама по себе не является проблемой (указатель указывает на недопустимое местоположение, ну и что? как это происходит после большинства циклов указателя), это тот факт, что мы пытаемся прочитать из памяти при выполнении p->i
в недопустимом месте, что является проблемой.