【问题标题】:Byte between two element [closed]两个元素之间的字节[关闭]
【发布时间】:2020-03-30 08:41:19
【问题描述】:

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

请给我解释一下。

【问题讨论】:

  • 打印 p1p2 并查看值。
  • sizeof(double) 是 8 个字节。
  • 我是47
  • @ĐăngKhôi 让我们考虑另一个包含 char 的数组。你说 m_char[0] 和 m_char[1] 之间有多少字节?
  • 这是一个棘手的问题:p1 和 p2 在堆栈上彼此相邻,因此它们之间的字节数为零。告诉你的老师提供不那么模棱两可的问题。

标签: c++ arrays element


【解决方案1】:

我相信这里的between是指两个指针所指向的相距多少字节。

给定:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-10
    • 2012-01-01
    • 1970-01-01
    • 2020-06-23
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    相关资源
    最近更新 更多