Какое ограничение на расстояние между указателями определенного типа в C ++? - PullRequest
5 голосов
/ 20 октября 2011

Предположим, у меня есть два указателя для ввода T:

T* first = ...// whatever
T* second = ... //whatever else

Могу ли я быть уверен, что расстояние между этими двумя указателями не может превышать:

((size_t)(-1))/sizeof(T)

1 Ответ

13 голосов
/ 20 октября 2011

Вы можете вычислить расстояние между двумя указателями (вычесть один указатель из другого), если оба указателя указывают на элементы в одном и том же массиве или на один конец одного и того же массива.

Если два указателя соответствуют этому ограничению, то да, абсолютное значение разности между двумя указателями не может превышать ((size_t)(-1)) / sizeof(T), поскольку size_t должно быть достаточно широким, чтобы представлять размер любого объекта в байтах.

Если эти два указателя не соответствуют этому ограничению, тогда вообще нет никакой гарантии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...