Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 06.06.2010, 15:45  
dsfj
Прописка
 
Регистрация: 19.01.2009
Сообщений: 132
Сказал спасибо: 20
Сказали Спасибо 26 раз(а) в 23 сообщении(ях)
dsfj на пути к лучшему
По умолчанию 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;
}
Реклама:
dsfj вне форума  
Непрочитано 06.06.2010, 16:33  
CERGEI1982
Почётный гражданин KAZUS.RU
 
Аватар для CERGEI1982
 
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
CERGEI1982 на пути к лучшему
По умолчанию Re: ccs+функция+массив

Если массив объявлен глобально,то его не надо передавать функции,сразу пользуйся.Правда так не хорошо делать.
Может так:
Код:
int mass[3];
void summ(int *m); //прототип
//вызов функции в программе
summ(&mass[0]);


void summ(int *m)
{
      int one,two;
      one=*m;
      two=*(m+1);
}
__________________
Глаза боятся,а руки делают.
CERGEI1982 вне форума  
Непрочитано 06.06.2010, 17:09  
dsfj
Прописка
 
Регистрация: 19.01.2009
Сообщений: 132
Сказал спасибо: 20
Сказали Спасибо 26 раз(а) в 23 сообщении(ях)
dsfj на пути к лучшему
По умолчанию 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);
}
как в таком случае сделать чтобы адреса выделяемые под элементы массива шли по возрастанию? Или как объявить массив глобально?
dsfj вне форума  
Непрочитано 06.06.2010, 17:34  
CERGEI1982
Почётный гражданин KAZUS.RU
 
Аватар для CERGEI1982
 
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
CERGEI1982 на пути к лучшему
По умолчанию Re: ccs+функция+массив

Сообщение от dsfj Посмотреть сообщение
Или как объявить массив глобально?
Попробуй прописать в main.h
__________________
Глаза боятся,а руки делают.
CERGEI1982 вне форума  
Непрочитано 06.06.2010, 18:35  
dsfj
Прописка
 
Регистрация: 19.01.2009
Сообщений: 132
Сказал спасибо: 20
Сказали Спасибо 26 раз(а) в 23 сообщении(ях)
dsfj на пути к лучшему
По умолчанию Re: ccs+функция+массив

Сообщение от CERGEI1982 Посмотреть сообщение
Попробуй прописать в main.h
ок. Работает.

А все таки как правильно по науки передавать массив в функцию, для последующей модификации его элементов?

Может есть книга/rtfm/сайт на котором это хорошо изложено. Книга Шпака есть...(-;
dsfj вне форума  
Непрочитано 06.06.2010, 18:39  
MisterDi
Почётный гражданин KAZUS.RU
 
Аватар для MisterDi
 
Регистрация: 13.02.2008
Адрес: Днепр. Украина
Сообщений: 3,294
Сказал спасибо: 442
Сказали Спасибо 1,048 раз(а) в 706 сообщении(ях)
MisterDi на пути к лучшему
По умолчанию Re: ccs+функция+массив

Стандартный способ передачи массива в функцию - использование указателей. Можно так передавать как один элемент, так и весь массив. Кеннигана и Ричи пока никто не отменял
__________________
misterdi<@>i.ua
MisterDi вне форума  
Непрочитано 06.06.2010, 21:36  
dsfj
Прописка
 
Регистрация: 19.01.2009
Сообщений: 132
Сказал спасибо: 20
Сказали Спасибо 26 раз(а) в 23 сообщении(ях)
dsfj на пути к лучшему
По умолчанию 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 обрабатываются отлично, а третий непонятно каким макаром некорректно...!?
dsfj вне форума  
Непрочитано 07.06.2010, 08:59  
AJScorp
Почётный гражданин KAZUS.RU
 
Аватар для AJScorp
 
Регистрация: 10.05.2005
Адрес: Саратов.ru
Сообщений: 1,548
Сказал спасибо: 384
Сказали Спасибо 737 раз(а) в 417 сообщении(ях)
AJScorp на пути к лучшему
По умолчанию 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.
AJScorp вне форума  
Непрочитано 07.06.2010, 14:52  
Boba_spb
Почётный гражданин KAZUS.RU
 
Регистрация: 08.06.2008
Сообщений: 1,394
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
Boba_spb на пути к лучшему
По умолчанию Re: ccs+функция+массив

if (TRUE)
return TRUE;
else
return FALSE;

всегда возвратит TRUE !!!!!
Boba_spb вне форума  
Непрочитано 07.06.2010, 15:03  
AJScorp
Почётный гражданин KAZUS.RU
 
Аватар для AJScorp
 
Регистрация: 10.05.2005
Адрес: Саратов.ru
Сообщений: 1,548
Сказал спасибо: 384
Сказали Спасибо 737 раз(а) в 417 сообщении(ях)
AJScorp на пути к лучшему
По умолчанию Re: ccs+функция+массив

Сообщение от Boba_spb Посмотреть сообщение
всегда возвратит TRUE !!!!!
Ну это видимо затычка )
AJScorp вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ccs picc Gladkih Proteus, KiCAD и другие ECAD 22 04.09.2010 11:04
CCS C compiller, файл <LCD.C> Zepp Ditrich Микроконтроллеры, АЦП, память и т.д 16 25.05.2010 19:12
Функция для расчета CRC maxNTF Микроконтроллеры, АЦП, память и т.д 3 30.12.2009 10:16
Есть у кого лекарство для CCS C Compiler svv11 Proteus, KiCAD и другие ECAD 7 19.11.2009 10:45
CCS PICC+Proteus+MPLAB=? batalionok Микроконтроллеры, АЦП, память и т.д 40 06.11.2009 16:22


Часовой пояс GMT +4, время: 07:10.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot