2009-08-03 2 views
1

Я просто выделяю некоторую память для символа и хочу сделать некоторую арифметику указателя. В этом случае я хочу писать «\ x0A» в байте 32 следующим образом:Присвоение значения выделенному массиву char не удается

#define HDR_SIZE 32 

int size = 52; 

unsigned char *readXPacket = (unsigned char *) malloc (size * sizeof (unsigned char)); 
*readXPacket + HDR_SIZE = '\x0a'; 

Когда я пытаюсь делать, что я получаю следующее сообщение об ошибке: Не значение задания. Кто-нибудь знает, что здесь не так?

Благодаря

ответ

6

Изменить задание:

*(readXPacket + HDR_SIZE) = '\x0a'; 
5

Try ...

*(readXPacket + HDR_SIZE) = '\x0a'; 
6

Что случилось с очевидным:

readXPacket[HDR_SIZE] = '\x0a'; 

, который является одновременно и короче яснее. и как вы используете C++, почему бы не сказать:

unsigned char * readXPacket = new unsigned char[size]; 

Или еще лучше:

std::vector <unsigned char> readXPacket(size); 

и есть C++ управление памятью для вас.