sddvxd: когда вы в коде пишете int i, компилятор выделяет в стеке 4 байта места под эту переменную.
Цепочки указателей в обычном случае не возникает, описанное вами похоже на связный список - каждый элемент списка содержит в начале структуры указатель на следующий элемент.
В памяти приложения может быть очень много структур, содержащих указатели на что-то ещё.
Статические элементы класса (ключевое слово static перед описанием переменной) общие для всех экземпляров. С указателями и выделением памяти не особо связано.
Когда программа запускается, система выделяет ей диапазон адресов памяти, может быть произвольным - зависит от операционной системы. В этой памяти располагается стек (в нем будут находиться в том числе и локальные переменные) и куча (динамически выделяемая память, для new и malloc).
Вот где переменная расположена, туда и будет указывать указатель. Для локальной переменной это будет участок стека, для динамически выделенной через new - место в куче.
По-моему, ардуино немного не то, там ведь все готовое. Надо модуль - покупай. Вот чтобы собрать свой девайс самостоятельно, нужно знать принцип работы электронных компонентов, базовые схемы из радиотехники, и т.д. - где об этом почитать?
ещё есть "через задницу", если у вас в структуре находятся только указатели, с которыми нужно работать:
for(int i = 0; i < sizeof(BUFF) / sizeof(int*); ++i)
delete[] ((int*)(&buff))[i];
От хаба с внешним питанием телефон заряжаться точно не станет, хаб не подает напряжение на "вход". Ищите именно такой кабель с тремя концами (USB male, USB female, microUSB OTG male)
Цепочки указателей в обычном случае не возникает, описанное вами похоже на связный список - каждый элемент списка содержит в начале структуры указатель на следующий элемент.
В памяти приложения может быть очень много структур, содержащих указатели на что-то ещё.