Индексация массива должна быть единственной формой адресной арифметики с указателями
Индексация массива должна быть единственной формой адресной арифметики с указателями.
Можно пересечь массив или контейнер двумя способами:
Постепенно увеличьте или постепенно уменьшите индекс массива или итератор, и затем используйте индекс массива или итератор, чтобы получить доступ к элементу.
Постепенно увеличьте или постепенно уменьшите указатель на массив и затем разыменуйте указатель.
Первый метод более ясен и менее подвержен ошибкам.
Все другие формы явной адресной арифметики с указателями вводят риск доступа к непреднамеренным ячейкам памяти.
Флаги средства проверки:
Арифметические операции на всех указателях, например, p+I
, I+p
и p-I
, где p
указатель и I
целое число.
Исключение позволено для итераторов, которые указывают на элементы в контейнерах, например, it
ниже:
std::vector<int> intList{ 1,2,3,4 }; for( auto it = intList.begin() ; it != intList.end() ; ++it )
Индексация массива на указателях немассивов.
Если вы ожидаете нарушение правила, но не видите его, обратитесь к Кодированию Стандартных Нарушений, Не Отображенных.
Группа: Выражения |
Категория: необходимый, автоматизированный |