Цитата(Pasha 111 @ Aug 10 2007, 17:10)

Всем привет! Пишу такой вот код:
Код
uint8 array[] = {1, 2, 3, 4, 5, 6, 7};
uint8 **a = (uint8 **)&array;
uint8 aaa = a[0][5] // <-- Тут проц выбрасывает в Data Abort
Вы присваиваете переменной
а адрес масива array.
Потом проц берет первый указатель по адресу
а (если формат little-endian, то это 0х04030201).
И прибавив к нему 5 пытается прочитать память по адресу 0х04030206.
Конечно это вызовет Data Abort.
Цитата(Pasha 111 @ Aug 10 2007, 17:10)

Пробовал писать даже так:
Код
uint8 array[] = {1, 2, 3, 4, 5, 6, 7};
uint8 *qqq = array;
uint8 **bbb = &qqq;
uint8 *aaa = bbb[0];
uint8 bbb = aaa[5]; // <-- Тут проц выбрасывает в Data Abort
Это работать будет, но зачем здесь двойной указатель?!
Интересно как оно могло скомпилиться?

Дважды объявлена
bbb.
Цитата(Pasha 111 @ Aug 10 2007, 17:10)

Как воспользоваться двойным указателем? Что я делаю не так?
Объясните для чего вы хотите его использовать?