|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
05.07.2011, 13:54 | #1 |
Пользователь
Регистрация: 05.07.2011
Сообщений: 11
|
Передача указателей на массив в функцию.
Программирую под микроконтроллер. Задача получать из АЦП данные и суммировать. Столкнулся с такой трудностью.
Есть некое место кода в котором есть кусок кода: (кусок искусственный и написан для иллюстрации проблемы) Код:
Тело функции такое: Код:
1) Чем отличается передача такая: SPI_MasterTrRc(inp3, outp3, ACPV); от такой SPI_MasterTrRc(&inp3[0], &outp3[0], ACPV); ? 2) Точно ли всегда массивы inp3 и out3 имеют одни и те же адреса? Когда аллоцируется память для этих 2 байт в массивах и когда освобождается? Замечания: Если написать просто так без цикла: Код:
|
05.07.2011, 15:58 | #2 |
Форумчанин
Регистрация: 11.07.2010
Сообщений: 914
|
Я уверен, что передача inp3 ни чем не отличается от &inp3[0].
Массивы мало того, что не динамические, да еще объявлены static. Выделение памяти под нединамические переменные должно в теории происходить при появлении их в зоне видимости. А освобождение, раз речь идет о static, при завершении программы. Так что формально все правильно. Вы, стараясь популярнее изложить вопрос, видимо выхолостили проблему. |
06.07.2011, 00:12 | #3 |
Пользователь
Регистрация: 05.07.2011
Сообщений: 11
|
Спасибо за комментарий по проблеме.
Забыл сказать важное - мы на протяжении этого кода, можем вываливаться в прерывания везде и вываливаемся очень часто. +Добавлю вовсе "наркоманию" (пусть будет всего ОДИН проход, i=1 стало): Так работает Код:
Код:
Код:
Последний раз редактировалось nibir; 06.07.2011 в 00:19. |
06.07.2011, 00:21 | #4 |
JAVA BEAN
Участник клуба
Регистрация: 22.04.2007
Сообщений: 1,329
|
А так?
Код:
Код:
|
06.07.2011, 00:37 | #5 |
Пользователь
Регистрация: 05.07.2011
Сообщений: 11
|
Интересная мысль, тов. Carbon. Приду завтра на работу к микроконтроллеру и протестирую.
Вообще у меня отладчик есть аппаратный для него (микроконтроллера), но ввиду сложности моей программы и куче таймеров, прерываний, обработчиков в ней использование отладчика, думаю, там будет проблематично. |
06.07.2011, 00:39 | #6 |
JAVA BEAN
Участник клуба
Регистрация: 22.04.2007
Сообщений: 1,329
|
Есть мнение, товарищ nibir, что у вас палёный компилер.
|
06.07.2011, 00:43 | #7 |
Форумчанин
Регистрация: 11.07.2010
Сообщений: 914
|
static int i;
Она объявлена глобально? Не может ли она случайно участвовать в коде самой функции. Нутро функции Вы не привели, и я могу предположить, что в ней может есть какой-нибудь итератор тоже с именем i, но вы его, допустим, забыли объявить в теле функции. |
06.07.2011, 11:42 | #8 | |
Пользователь
Регистрация: 05.07.2011
Сообщений: 11
|
Цитата:
|
|
06.07.2011, 11:43 | #9 |
Пользователь
Регистрация: 05.07.2011
Сообщений: 11
|
Нет она не объявлена глобально, на всякий случай попробовал все что тут писали и с именем ii вместо i - результат тот же.
|
06.07.2011, 11:44 | #10 |
Пользователь
Регистрация: 05.07.2011
Сообщений: 11
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Передача в функцию указателя на динамический массив | Airou | Общие вопросы C/C++ | 4 | 05.05.2011 17:07 |
Указатель на массив указателей на массив char'ов... | SrgGld | Общие вопросы C/C++ | 0 | 19.11.2010 23:35 |
скорость работы указателей на функцию | coinkrsk | Общие вопросы C/C++ | 3 | 31.10.2010 21:13 |
Передача списка указателей (TList) как параметр в dll | sneksnek2006 | Общие вопросы C/C++ | 1 | 28.10.2010 11:33 |
Передача указателя на массив в функцию | loser | Общие вопросы C/C++ | 2 | 19.02.2010 19:41 |