Операторы +, -, + = и - = не должны применяться к выражению типа указателя
Операторы +, -, + = и - = не должны применяться к выражению типа указателя.
Предпочтительной формой арифметики указателя является использование синтаксиса индекса массива ptr[expr]
. Этот синтаксис ясен и менее подвержен ошибкам, чем манипуляции с указателем. При манипуляции указателем любое явно вычисленное значение указателя может получить доступ к непреднамеренным или недопустимым адресам памяти. Индексация массивов также может получить доступ к непреднамеренной или недопустимой памяти, но ее легче просмотреть.
Новому программисту на C выражение ptr+1
может быть ошибочно истолкован как один плюс адрес ptr
. Однако новый адрес памяти зависит от размера, в байтах, цели указателя. Эта путаница может привести к неожиданному поведению.
При использовании с осторожностью, манипуляция указателями с помощью ++
может быть более естественным (для образца, последовательно получая доступ к местоположениям во время тестирования памяти).
Polyspace® операции флагов для указателей, например Pointer + Integer
, Integer + Pointer
, Pointer - Integer
.
Если вы ожидаете нарушения правил, но не видите его, обратитесь к разделу «Стандартные нарушения кодирования не отображаются».
Группа: указатели и массивы |
Категория: Консультационные |
Категория СМЖЛ: Консультационная |