两个元素之间的字节

时间:2020-03-30 08:41:19

标签: c++ arrays element

我的老师问我一个问题,他说答案是48个字节

请向我解释。

1 个答案:

答案 0 :(得分:1)

我相信之间的 表示两个指针指向的字节数远。

给出:

p1 = m;     // 0th index, 1st element
p2 = &m[6]; // 6th index, 7th element
            // 7 - 1 = 6 elements (between)

因此,p1p2double类型的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 );