【发布时间】:2016-03-09 12:37:33
【问题描述】:
我对C++不是很熟悉,所以想问一下,下面的代码会做什么(我在现有的C++项目中有):
1: char* buf;
2: *buf = 0;
3: int readBytes = tcpSocket->read(buf, 10);
4: buf += readBytes;
解释很简单,应该从一个 TCP Socket 读取 10 个字节,读取的字节存储在 char* Buffer "buf" 中。 返回值是读取的字节数。
但为什么我需要第 4 行? 或者更好的是第 4 行在做什么? 据我了解,它正在破坏我的“buf”结果,不是吗?
我希望有人可以帮助我,也许可以解释一下,为什么我需要这行 4。
BR 总价
【问题讨论】:
-
此处未定义行为"
*buf = 0;。您的指针未指向任何可以取消引用的地方。 -
buf += readBytes正在移动读取字节末尾的指针。可能让对tcpSocket->read的下一次调用在已经读取的字节之后开始写入。但正如 juanchopanza 所说,在buf显示的代码中,无论如何都没有初始化。当然,如果您想稍后使用它,您必须将原始起始指针保存在某个地方。 -
您需要将
buf指向实际的缓冲区。类似char data[10]; char* buf = data;。 -
感谢您的回答,这对我很有帮助。