Непонятки с адресной арифметикой
От: a1ien.n3t  
Дата: 07.04.11 11:51
Оценка:
может я уже того головой двинулся но как тут правильно юзать адресную арифметику.

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: Непонятки с адресной арифметикой
От: 0xDEADBEEF Ниоткуда  
Дата: 07.04.11 11:56
Оценка:
Здравствуйте, 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: Непонятки с адресной арифметикой
От: CreatorCray  
Дата: 07.04.11 11:59
Оценка:
Здравствуйте, 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]: Непонятки с адресной арифметикой
От: a1ien.n3t  
Дата: 07.04.11 12:00
Оценка: :)
Здравствуйте, 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]: Непонятки с адресной арифметикой
От: 0xDEADBEEF Ниоткуда  
Дата: 07.04.11 12:41
Оценка:
Здравствуйте, 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). У вас же копируется только первый символ.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.