Я не настолько знаком с C++, так что я хочу спросить, что следующий код будет делать (я его в существующий C++ проект):Указатель массива + Integer (C++)
1: char* buf;
2: *buf = 0;
3: int readBytes = tcpSocket->read(buf, 10);
4: buf += readBytes;
Объяснение очень просто, из TCP Socket следует читать 10 байт, а прочитанные байты хранятся в буфере «buf» char *. Возвращаемое значение - количество прочитанных байтов.
Но зачем мне нужна линия 4? Или лучше, что делает линия 4? В моем понимании это разрушает мой результат «buf», не так ли?
Я надеюсь, что кто-то может мне помочь, а может объяснить мне, почему мне нужна эта линия 4.
BR THW
Неопределенное behavour здесь»' * ЬиЕ = 0; 'Ваш указатель не делает. указывают на любое место, которое может быть отменено. – juanchopanza
'buf + = readBytes' перемещает указатель в конце прочитанных байтов. Вероятно, чтобы следующий вызов' tcpSocket-> read' начал писать после уже прочитанных байтов Но, как сказал juanchopanza, в коде, показанном как 'buf', никогда не было инициализировано в любом случае. И, конечно же, вам нужно будет сохранить указатель на начало orginial где-нибудь, если вы хотите использовать его позже. –
Вам нужно указать' buf' на фактический буфера. Что-то вроде 'c данные har [10]; char * buf = data; '. – molbdnilo