有没有办法让我获取内存地址并将其提前一定数量存储在变量中?该变量类型必须是什么?
例如,在下面的代码中,我想首先查看 data + 0,然后在之后的每个步骤中查看 data + sent。如果我没看错的话,sent 是以字节的形式存储的,而 data 是一个内存地址。
bool sendAll(int socket, const void *data, ssize_t size) {
ssize_t sent = 0;
ssize_t just_sent;
while (sent < size) {
just_sent = send(socket, data + sent, size - sent, 0);
if (just_sent < 0) {
return false;
}
sent += just_sent;
}
return true;
}
最佳答案
这就是 char*
的作用。指针数学,当指针的类型为 T*
时,始终以 sizeof (T)
为增量进行计算。根据定义,sizeof (char) == 1
。
所以尝试:
just_sent = send(socket, sent + (const char*)data, size - sent, 0);
关于C++ 内存地址递增,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13132659/