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