почему? если они гарантированно подряд будут идти, то указатель спокойно по ним будет бегать.
вопрос в том, как компилятору сказать, что их строго последовательно нужно разместить.
Правильнее будет не рассчитывать на то, что массивы будут физически лежать подряд, а обеспечить это в коде - например написать простенький класс-обертку, который будет эмулировать один большой массив из нескольких поменьше.
И не надо будет насиловать компоновщик, заставляя класть массивы по конкретным адресам, для языка высокого уровня это противоестесственно
Максимальный размер массива (именно размер, а не количество элементов) задаётся константой PTRDIFF_MAX. Попробуйте на своей Меге вывести её значение в монитор порта и полюбуйтесь на него.
насколько я понял, PTRDIFF_MAX это всегда максимальный размер знакового int на платформе. То есть на Гиге (есть такая ардуина на основе STM32H7 - это будет 2 миллиарда
@ae485
возьмите любую 32-битную ардуину - ЕСП32 или СТМ32 - там нет этого ограничения (точнее есть, но вам точно хватит
Заодно и с ПРОГМЕМ не надо будет связываться. Вообще, с появлением доступных ЕСП32 и СТМ32 я не понимаю, зачем разрабатывать серьезные проекты на АВР. 8битные платы очень устарели
Ну вот и ответ: часть массива лежит за пределами 64к блока, адресуемого int*.
Здесь нужен far указатель (точно не помню, как он записывается, но дальше можно поиском).