﻿# V620\. Expression of sizeof\(T\)\*N kind is summed up with pointer to T type\. Consider inspecting the expression\.

Анализатор обнаружил, что к переменной типа указатель прибавляется выражение, содержащее оператор sizeof\(T\)\. Такое  использование может свидетельствовать о некорректной адресной арифметике\.

Рассмотрим простейший пример:

```cpp
int *p;
size_t N = 5;
...  
p = p + sizeof(int)*N;
```

Такое использование некорректно\. Ожидается, что мы переместимся на N элементов структуры данных\. Вместо этого происходит смещение на  20 элементов, поскольку sizeof\(int\) имеет значение 4 в 32\-битных программах\. В результате мы получим: "p \= p \+ 20;"\. Возможно допущена опечатка или иная ошибка\. Корректный вариант кода:

```cpp
int *p;
size_t N = 5;
...  
p = p + N;
```

Примечание\. Анализатор считает код корректным, если в нём работают с типом char\. Рассмотрим пример, где анализатор не выдаёт предупреждение:

```cpp
char *c;
size_t N = 5;
...  
c = c + sizeof(float)*N;
```