Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Работа с массивами


Автор: Aline 25.1.2008, 10:56
Привет всем!

Такой вопрос: есть массив байтов (char) и есть массив слов (int32), при изменении байта надо внести соответствующее изменение в слово и наоборот, как это сделать? 

Это процедура чтения:

Код

__int32 b_tr[2*ArLen];  
unsigned char bchar_tr[2*4*ArLen];  

__int32 *bb;
  unsigned char *char_bb;

 bb = Alloc_buf;
  char_bb = (unsigned char*)bb;

  char_bb += AdrTrnsFst;

  bb += AdrTrnsFst/4;

  for (int i = 0; i < 2*ArLen; i++) {
      b_tr[i] = *(bb+i);
    }

  for (int i = 0; i < 4*2*ArLen; i++) {
      bchar_tr[i] = *(char_bb+i);
    }


А при записи, может быть изменение или в байте или в слове (в зависимости от флажка), сответственно необходимо записать изменения в другой массив, как это сделать?

Скажем:
Код

bchar_tr[1]  = 0xAA;


Как это изменение внести в массив b_tr? (и наоборот)

Автор: mr.DUDA 25.1.2008, 11:17
Модератор: перемещено из ".NET для новичков"

Автор: Lazin 25.1.2008, 11:50
memcpy  smile 
просто берешь и копируешь изменившийся участок памяти

Автор: JackYF 25.1.2008, 12:19
Автор, может, тебе union поможет?

Автор: Lazin 25.1.2008, 12:48
Цитата(JackYF @  25.1.2008,  12:19 Найти цитируемый пост)
Автор, может, тебе union поможет? 

Код

union my_array
{
    __int32 b_tr[2*ArLen];  
    unsigned char bchar_tr[2*4*ArLen];  
};

my_array.bchar_tr[i] = 0xAA;

Автор: Aline 25.1.2008, 13:58
Lazin, спасибо, то что надо

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)