Некоторые программисты C или C ++ с удивлением обнаруживают, что даже сохранение недопустимого указателя является неопределенным поведением . Однако для массивов кучи или стека можно хранить адрес одного за концом массива, что позволяет сохранять «конечные» позиции для использования в циклах.
Но это неопределенное поведение для формирования диапазона указателя из одной переменной стека, например:
char c = 'X';
char* begin = &c;
char* end = begin + 1;
for (; begin != end; ++begin) { /* do something */ }
Хотя приведенный выше пример довольно бесполезен, он может быть полезен в том случае, если какая-то функция ожидает диапазон указателя, и у вас есть случай, когда у вас просто есть одно значение для его передачи.
Это неопределенное поведение?