Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.07.2013, 16:31   #1
vovken1997
Дружелюбный
Форумчанин
 
Аватар для vovken1997
 
Регистрация: 23.02.2012
Сообщений: 692
Вопрос Как методу передать массив байт

Всем привет!
В делфи я создавал новый тип, типо:
Код:
type
TArray=record
a:array[0..255] of byte;
end;
И в функцию уже передовал переменную с типом TArray. Как такое в си сделать?
-==ЛЮБОЕ ЗНАНИЕ ДОСТИГАЕТСЯ ТОЛЬКО СОБСТВЕННЫМИ УСИЛИЯМИ!!!==-
vovken1997 вне форума Ответить с цитированием
Старый 07.07.2013, 16:42   #2
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от vovken1997 Посмотреть сообщение
Всем привет!
В делфи я создавал новый тип, типо:
Код:
type
TArray=record
a:array[0..255] of byte;
end;
И в функцию уже передовал переменную с типом TArray. Как такое в си сделать?
Код:
//чистый си
void Foo( int* data, size_t size)
{
	size_t n = size/sizeof(int);
	for(size_t i =0; i<n;++i) std::cout<< data[i]<<" ";
	std::cout<<'\n';
}

//с++
template<class T, size_t N>void Foo( T (&data)[N])
{
	for(size_t i =0; i<N;++i) std::cout<< data[i]<<" ";
	std::cout<<'\n';
}


int main()
{
    int arr[]={1,2,3,4,5};

    Foo(arr, sizeof(arr) );  //<--- небезопасная работа с указателем в стиле си

    Foo(arr); //<--- безопасная работа с ссылкой на массив в стиле с++

    system("pause");
}

Последний раз редактировалось _Bers; 07.07.2013 в 16:52.
_Bers вне форума Ответить с цитированием
Старый 07.07.2013, 16:42   #3
challengerr
Участник клуба
 
Аватар для challengerr
 
Регистрация: 30.07.2008
Сообщений: 1,639
По умолчанию

Использовать указатели.
Код:
#include <windows.h>
#include <stdio.h>

void f2(BYTE b[])
{
unsigned char i;
for(i=0;i<255;i++)
printf("%d ", b[i]);
}

void f(BYTE* b)
{
unsigned char i;
for(i=0;i<255;i++)
printf("%d ", b[i]);
}

int main()
{
BYTE a[255];
unsigned char i;

for(i=0;i<255;i++)
a[i]=i;

f(a);
f2(a);
}
"SPACE.THE FINAL FRONTIER.This's a voyage of starship Enterprise. It's 5-year mission to explore strange new worlds,to seek out new life and civilizations,to boldly go where no man has gone before"
challengerr вне форума Ответить с цитированием
Старый 07.07.2013, 16:51   #4
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от challengerr Посмотреть сообщение
Использовать указатели.
Если вы пишите на плюсах - не используйте указатели. Работа в стиле си не безопасна.

На плюсах есть более безопасный способ - передавать ссылку на массив.
_Bers вне форума Ответить с цитированием
Старый 07.07.2013, 17:02   #5
vovken1997
Дружелюбный
Форумчанин
 
Аватар для vovken1997
 
Регистрация: 23.02.2012
Сообщений: 692
По умолчанию

Я пишу для Arduino UNO. Какой там си?
-==ЛЮБОЕ ЗНАНИЕ ДОСТИГАЕТСЯ ТОЛЬКО СОБСТВЕННЫМИ УСИЛИЯМИ!!!==-
vovken1997 вне форума Ответить с цитированием
Старый 08.07.2013, 20:45   #6
b2soft
Упртй программер
Форумчанин
 
Регистрация: 26.11.2009
Сообщений: 150
По умолчанию

а в какой среде пишете?
Помощь с кодом/лабами по С/С++
Контакты: ICQ 623334555 Skype: btwosoft; Mail: b2soft@yandex.ru
b2soft вне форума Ответить с цитированием
Старый 08.07.2013, 20:57   #7
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,336
По умолчанию

2vovken1997
там кресты. сначала язык изучи по какому-нить мануалу, потом по туторам ардуиновским проходись
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сохранить байты файла как массив байт в .txt fucil Общие вопросы Delphi 6 23.05.2013 20:59
Передать массив байт [D7]Indy => [XE2]Indy Человек_Борща Работа с сетью в Delphi 1 15.09.2012 22:06
Дан массив из 9 байт расматривая его как массив 72 бит подсчитать число нулей в этом массиве. noob asm Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 6 16.04.2012 19:04
Как передать Динамический массив в функцию? RainCat Помощь студентам 4 13.04.2011 11:25
Как конвертировать массив символов в массив байт davinci C++ Builder 6 30.10.2010 18:09