i > N, где N - размер массива.
какого массива? того, что получился в выражении array[0]
а это массив типа int[5]
Невалид i ≥ N, т.к последний элемент будет иметь индекс N - 1. {0, 1, 2, 3, 4} => N = 5 Элемента с индексом 5 не существует.
но вычислить указатель на него можно
согласен, не очень ясно написал, но всё же выражение (array + 5) валидно - получается past-the-end указатель вот *(array + 5) уже нельзя
Можно, это специально проговоренный случай
это не будет элементом следующего массива
Не будет, но это не противоречит
expr.add#4.2 определенно пункт дня сегодня в этом чате
это будет указатель, но не на элемент
речь шла только о том, что указатель можно вычислить
но вычислить указатель на него можно на кого ?
а на что-же? на память? на какую? на гипотетический элемент (если мы не вышли за пределы массива х) points to the (possibly-hypothetical) array element. но если это указатель на память, в котором лежит элемент массива х то что же это?
На гипотетический элемент, очевидно
именно это и не определено. это и есть UB
да я вас умоляю, кто вам это запрещает. тогда бы все memset-ы и т.п код просто бы не работал!
memset делают на каждый вложенный массив отдельно
Вы вроде столько лет эту идею продвигаете, ещё не надоело?) Код с UB работает прямо сейчас в конкретном примере != UB нет
Можно делать и целиком
да можно делать и как в этом примере с UB
Обсуждают сегодня