Индексация массива должна быть единственной формой адресной арифметики с указателями
Индексация массива должна быть единственной формой адресной арифметики с указателями.
Можно пересечь массив или контейнер двумя способами:
Постепенно увеличьте или постепенно уменьшите индекс массива или итератор, и затем используйте индекс массива или итератор, чтобы получить доступ к элементу.
Постепенно увеличьте или постепенно уменьшите указатель на массив и затем разыменуйте указатель.
Первый метод более ясен и менее подвержен ошибкам.
Все другие формы явной адресной арифметики с указателями вводят риск доступа к непреднамеренным ячейкам памяти.
Флаги средства проверки:
Арифметические операции на всех указателях, например, 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 )Индексация массива на указателях немассивов.
Если вы ожидаете нарушение правила, но не видите его, обратитесь к Кодированию Стандартных Нарушений, Не Отображенных.
| Группа: Выражения |
| Категория: необходимый, автоматизированный |