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