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