реклама на сайте
подробности

 
 
> Использование двойного указателя, SAM7S64, IAR
Pasha 111
сообщение Aug 10 2007, 14:10
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 154
Регистрация: 6-11-05
Из: Москва
Пользователь №: 10 515



Всем привет! Пишу такой вот код:

Код
    uint8 array[] = {1, 2, 3, 4, 5, 6, 7};

    uint8 **a = (uint8 **)&array;
    uint8 aaa = a[0][5] // <-- Тут проц выбрасывает в Data Abort


Пробовал писать даже так:

Код
    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


Как воспользоваться двойным указателем? Что я делаю не так?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Pasha 111
сообщение Aug 11 2007, 14:49
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 154
Регистрация: 6-11-05
Из: Москва
Пользователь №: 10 515



Цитата
Интересно как оно могло скомпилиться? Дважды объявлена bbb.

Прошу прощения, там в последней строчке конечно же не bbb, а, например, ggg smile.gif. Но этот код все равно НЕ работает! Там также возникает ошибка Data Abort sad.gif

Цитата
Объясните для чего вы хотите его использовать?

В программе реализуется модуль, который в зависимости от номера, который приходит от компа, должен посылать определённые данные, т.е. число, пришедшее от компа соответствует номеру массива данных. Соответственно и получается два указателя: один на массив, а второй на элементы внутри.

Можно было бы сделать переменные типа data1[] = {...}, data2[] = {...}, data3[] = {...}..... а потом написать что-то типа
switch(num){
case 1: send(data1); break;
case 2: send(data2); break;
case 3: send(data3); break;
}

Но, согласитесь, гораздо проще писать send(data[num]);

Тем более что этот модуль находится в отдельном .cpp файле, в нем реализован алгоритм сапоставления строк и чисел, а данные сами имеют разный смысл и называть их data1...3 совсем не логично.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 16:27
Рейтинг@Mail.ru


Страница сгенерированна за 0.01353 секунд с 7
ELECTRONIX ©2004-2016