首页 > 解决方案 > 两个元素之间的字节

问题描述

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

请向我解释。

标签: c++arrayselement

解决方案


我相信这里的中间意味着两个指针指向的相距多少字节。

鉴于:

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

所以,p1p26 个元素的double类型相距甚远。

sizeof(double)在那个架构上应该是 8 个字节。

因此,

6 elements x sizeof(double) = 6 x 8 = 48 bytes

以编程方式,它将是:

auto bytes = (p2 - p1) * sizeof(double);

这是一个例子(现场):

#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 );

推荐阅读