我的老师问我一个问题,他说答案是48个字节
请向我解释。
答案 0 :(得分:1)
我相信之间的 表示两个指针指向的字节数远。
给出:
p1 = m; // 0th index, 1st element
p2 = &m[6]; // 6th index, 7th element
// 7 - 1 = 6 elements (between)
因此,p1
和p2
是double
类型的6个元素,相距很远。
sizeof(double)
应该是8个字节。
因此
6 elements x sizeof(double) = 6 x 8 = 48 bytes
以编程方式,它将是:
auto bytes = (p2 - p1) * sizeof(double);
下面是一个示例(live):
#include <iostream>
int main()
{
double m[100];
double *p1, *p2;
p1 = m; // 0th index, 1st element
p2 = &m[6]; // 6th index, 7th element
const auto bytes = (p2 - p1) * sizeof(double);
std::cout << "Bytes: " << bytes;
return 0;
}
输出:
Bytes: 48
std::distance也可用于计算距离:
auto bytes = std::distance( p1, p2 );