арифметика указателей на языке Си работает над типом объекта. Неважно, насколько велик объект. Ссылка на следующий объект минус ссылка на предыдущий всегда один объект
Так что, если мы добавим 5 к указателю, он укажет 5 объектов вперед. Если мы увеличиваем указатель, он будет ссылаться на следующий объект. Это помогает индексировать и перебирать объекты.
Когда вы печатаете адрес (ваш формат неправильный - вместо него следует использовать% p), он печатается в байтах. Таким образом, разница между последовательными объектами будет равна размеру объекта (плюс необязательный отступ).
А как мне получить 4 с помощью оператора вычитания ???
Приведите указатели к типу, размер которого равен единице, например char
.
(char *)&vector[1] - (char *)&vector