Непонятки с адресной арифметикой
может я уже того головой двинулся но как тут правильно юзать адресную арифметику.
char *pkt[10];
pkt[curpkt]=new char [hdr->contentLength()];
int st=(seq-cur_seq);
(pkt[curpkt]+st)=data;
Тоесть мне нужно в выделенный масив pkt[curpkt] по смещению st записать данные
компилятор жалуется
lvalue required as left operand of assignment
Re: Непонятки с адресной арифметикой
Здравствуйте, a1ien.n3t, Вы писали:
AN>lvalue required as left operand of assignment
pkt[curpkt][st]=data;
//или
*(pkt[curpkt]+st)=data;
__________
16.There is no cause so right that one cannot find a fool following it.
Re: Непонятки с адресной арифметикой
Здравствуйте, a1ien.n3t, Вы писали:
AN>AN>char *pkt[10];
AN>pkt[curpkt]=new char [hdr->contentLength()];
AN>int st=(seq-cur_seq);
AN>(pkt[curpkt]+st)=data;
AN>
* (pkt[curpkt]+st)=data;
или лучше упрости код:
char* pCurPkt = pkt[curpkt];
pCurPkt[st] = data;
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[2]: Непонятки с адресной арифметикой
Здравствуйте, 0xDEADBEEF, Вы писали:
DEA>*(pkt[curpkt]+st)=data;
bool PacketHandler::packet_add(char *data, uint32_t seq, uint32_t size)
{
int st=(seq-cur_seq);
*(pkt[curpkt]+st)=data;
пишет invalid conversion from 'char*' to 'char'
если добавить * к data тоесть *data то ок. Но почему??
Re[3]: Непонятки с адресной арифметикой
Здравствуйте, a1ien.n3t, Вы писали:
AN>пишет invalid conversion from 'char*' to 'char'
Потому что data — указатель, те адрес ячейки памяти
AN>если добавить * к data тоесть *data то ок. Но почему??
потому, что ты разыменовал указатель — т.е извлек из ячейки памяти то, что там лежит.
__________
16.There is no cause so right that one cannot find a fool following it.
Re[3]: Непонятки с адресной арифметикой
От:
rusted
Дата: 08.04.11 06:52
Оценка:
Здравствуйте, a1ien.n3t, Вы писали:
AN>Здравствуйте, 0xDEADBEEF, Вы писали:
DEA>>*(pkt[curpkt]+st)=data;
AN>AN>bool PacketHandler::packet_add(char *data, uint32_t seq, uint32_t size)
AN>{
AN> int st=(seq-cur_seq);
AN> *(pkt[curpkt]+st)=data;
AN>
AN>пишет invalid conversion from 'char*' to 'char'
AN>если добавить * к data тоесть *data то ок. Но почему??
И еще к предыдущему ответу:
то что data указатель намекает, что там не один char, а много (наверное size). У вас же копируется только первый символ.
Пока на собственное сообщение не было ответов, его можно удалить.
Удалить