Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
06.06.2010, 15:45
|
|
Прописка
Регистрация: 19.01.2009
Сообщений: 132
Сказал спасибо: 20
Сказали Спасибо 26 раз(а) в 23 сообщении(ях)
|
ccs+функция+массив
Доброе время суток.
Подскажите как создать функцию которой необходимо передать массив ( например BYTE wdata[3]), функция возвращает true (в данном случае соответственно еще и изменяются значения элементов массива) или false. Причем элемент массива заполняется в цикле функцией shift_left.
То есть
BYTE massiv[3];
getmassiv (&massiv[]); //как здесь правильно надо сделать?
------------------------------
сама функция объявлена во внешнем файле.
------------------------------
BOOLEAN getmassiv (BYTE *pmas[]) //как здесь правильно надо сделать?
{
int i;
for (i=0;i‹3;i++)
{
shift_left(&pmas[i],1,0); //как здесь правильно надо сделать?
};
if (TRUE)
return TRUE;
else
return FALSE;
}
|
|
|
|
06.06.2010, 16:33
|
|
Почётный гражданин KAZUS.RU
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
|
Re: ccs+функция+массив
Если массив объявлен глобально,то его не надо передавать функции,сразу пользуйся.Правда так не хорошо делать.
Может так:
Код:
|
int mass[3];
void summ(int *m); //прототип
//вызов функции в программе
summ(&mass[0]);
void summ(int *m)
{
int one,two;
one=*m;
two=*(m+1);
} |
__________________
Глаза боятся,а руки делают.
|
|
|
|
06.06.2010, 17:09
|
|
Прописка
Регистрация: 19.01.2009
Сообщений: 132
Сказал спасибо: 20
Сказали Спасибо 26 раз(а) в 23 сообщении(ях)
|
Re: ccs+функция+массив
Сообщение от CERGEI1982
|
Если массив объявлен глобально,то его не надо передавать функции,сразу пользуйся.Правда так не хорошо делать.
Может так:
Код:
|
int mass[3];
void summ(int *m); //прототип
//вызов функции в программе
summ(&mass[0]);
void summ(int *m)
{
int one,two;
one=*m;
two=*(m+1);
} |
|
как в таком случае сделать чтобы адреса выделяемые под элементы массива шли по возрастанию? Или как объявить массив глобально?
|
|
|
|
06.06.2010, 17:34
|
|
Почётный гражданин KAZUS.RU
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
|
Re: ccs+функция+массив
Сообщение от dsfj
|
Или как объявить массив глобально?
|
Попробуй прописать в main.h
__________________
Глаза боятся,а руки делают.
|
|
|
|
06.06.2010, 18:35
|
|
Прописка
Регистрация: 19.01.2009
Сообщений: 132
Сказал спасибо: 20
Сказали Спасибо 26 раз(а) в 23 сообщении(ях)
|
Re: ccs+функция+массив
Сообщение от CERGEI1982
|
Попробуй прописать в main.h
|
ок. Работает.
А все таки как правильно по науки передавать массив в функцию, для последующей модификации его элементов?
Может есть книга/rtfm/сайт на котором это хорошо изложено. Книга Шпака есть...(-;
|
|
|
|
06.06.2010, 18:39
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.02.2008
Адрес: Днепр. Украина
Сообщений: 3,294
Сказал спасибо: 442
Сказали Спасибо 1,048 раз(а) в 706 сообщении(ях)
|
Re: ccs+функция+массив
Стандартный способ передачи массива в функцию - использование указателей. Можно так передавать как один элемент, так и весь массив. Кеннигана и Ричи пока никто не отменял
__________________
misterdi<@>i.ua
|
|
|
|
06.06.2010, 21:36
|
|
Прописка
Регистрация: 19.01.2009
Сообщений: 132
Сказал спасибо: 20
Сказали Спасибо 26 раз(а) в 23 сообщении(ях)
|
Re: ccs+функция+массив
Вобщем получается сделал так:
этот код в main()
BYTE massiv[3];
getmassiv (&massiv[0]);
------------------------------
сама функция объявлена во внешнем файле.
------------------------------
BOOLEAN getmassiv (BYTE *pmas[]) //как здесь правильно надо сделать?
{
int i;
for (i=0;i‹3;i++)
{
shift_left((pmas+i),1,0);
};
if (TRUE)
return TRUE;
else
return FALSE;
}
вобщем первые два элемента массива 0 и 1 обрабатываются отлично, а третий непонятно каким макаром некорректно...!?
|
|
|
|
07.06.2010, 08:59
|
|
Почётный гражданин KAZUS.RU
Регистрация: 10.05.2005
Адрес: Саратов.ru
Сообщений: 1,548
Сказал спасибо: 384
Сказали Спасибо 737 раз(а) в 417 сообщении(ях)
|
Re: ccs+функция+массив
Сообщение от dsfj
|
как здесь правильно надо сделать
|
Код:
|
BYTE massiv[3];
getmassiv (&massiv[0]); //или getmassiv(massiv);
------------------------------
сама функция объявлена во внешнем файле.
------------------------------
BOOLEAN getmassiv (BYTE *pmas)
{
int i;
for (i=0;i‹3;i++)
{
shift_left(*(pmas+i),1,0); //или shift_left(*pmas++,1,0);
};
if (TRUE)
return TRUE;
else
return FALSE;
} |
Последний раз редактировалось AJScorp; 07.06.2010 в 15:05.
|
|
|
|
07.06.2010, 14:52
|
|
Почётный гражданин KAZUS.RU
Регистрация: 08.06.2008
Сообщений: 1,394
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
|
Re: ccs+функция+массив
if (TRUE)
return TRUE;
else
return FALSE;
всегда возвратит TRUE !!!!!
|
|
|
|
07.06.2010, 15:03
|
|
Почётный гражданин KAZUS.RU
Регистрация: 10.05.2005
Адрес: Саратов.ru
Сообщений: 1,548
Сказал спасибо: 384
Сказали Спасибо 737 раз(а) в 417 сообщении(ях)
|
Re: ccs+функция+массив
Сообщение от Boba_spb
|
всегда возвратит TRUE !!!!!
|
Ну это видимо затычка )
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 07:10.
|
|