c++ - 两个元素之间的字节
问题描述
我的老师问我一个问题,他说答案是 48 字节
请向我解释。
解决方案
我相信这里的中间意味着两个指针指向的相距多少字节。
鉴于:
p1 = m; // 0th index, 1st element
p2 = &m[6]; // 6th index, 7th element
// 7 - 1 = 6 elements (between)
所以,p1
和p2
6 个元素的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 );
推荐阅读
- windows-10 - VS 2019 不立即删除文件
- solr - 如何检索 Solr 内核的自定义属性
- python-3.x - 在 Python Selenium 中浏览指定的国家/地区 IP 地址
- soap - 为什么我会收到 Soap 响应命名空间错误
- javascript - 无法专注于 Angular @ng-select 中的自定义提交按钮
- elasticsearch - 未创建 Elasticsearch 索引
- nginx - AWS APIGateway 的 Nginx 反向代理
- java - 打开 PDF 时,Lollipop 上的类 android.webkit.WebView 发生错误膨胀崩溃
- sql - T-SQL 合并两个具有常用和不常用列的表
- kubernetes - 在 Kubernates GCP 环境中通过 WebSocket 服务 MQTT