Когда мы создаем массив в стеке, скажем, int arr[20];, гарантируется ли, что каждая ячейка массива находится на расстоянии 4 байта в памяти? Или может случиться так, что некоторые ячейки не будут выделены последовательно?
int arr[20];
Массив гарантированно хранится в непрерывной памяти. Арифметика указателя определяется таким образом, что
&arr[i] + 1 == &arr[i + 1]