Будет ли всегда считаться следующее утверждение независимо от платформы, и есть ли у вас ссылка на эту гарантию?Переносимость итерации по массиву с помощью указателя
const unsigned SIZE = 10;
Foo array[SIZE];
Foo* ptr = array;
for (int i = 0; i < SIZE; ++i) {
assert(&array[i] == (ptr + i));
}
Edit: Для выяснения вопроса, для цикла можно использовать для перебора элементов массива следующими способами:
for (int i = 0; i < array_size; ++i) {
DoSomethingWith(array[i]);
}
Foo* end = array + array_size;
for (Foo* ptr = array; ptr < end; ++ptr) {
DoSomethingWith(*ptr);
}
Я понимаю, что не все архитектуры использовать тот же порядок при обращении к памяти, поэтому мне было интересно узнать о переносимости метода указателя. Если бы вы искали этот сайт для использования «итерации массива с указателем» или ошибочно включали endian в поиск, ничего существенного не появилось.
Да, это всегда будет правдой. Вам не удалось найти ссылку самостоятельно? Где вы пытались посмотреть (есть ответы SO со ссылками на окончательные проекты C, C++ 03 и C++ 11), и как вы застряли ...? Downvote для «этот вопрос не показывает никаких исследований». –