首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >指针算术问题(数组大小) [C++]

指针算术问题(数组大小) [C++]
EN

Stack Overflow用户
提问于 2020-04-30 10:39:11
回答 1查看 79关注 0票数 1
代码语言:javascript
复制
#include <bits/stdc++.h> 
using namespace std; 

int main() 
{ 
    int  arr[] = {1, 2, 3, 4, 5, 6}; 
    int size = *(&arr + 1) - arr; 

    return 0; 
} 

int size = *(&arr + 1) - arr;如何准确地找到数组的大小?我已经读了极客们的解释,但还是有点困惑。我想如果你解引用(&arr + 1),那么它会给你一个不存在的值,因为你跳过了前面的6个整数,这可以是那个内存地址中的任何随机数?另外,如果您能够将(&arr + 1)解引用为int类型,那么如何从arr中减去该值

EN

回答 1

Stack Overflow用户

发布于 2020-04-30 11:29:11

*(&arr + 1) - arr是编写6的一种非常复杂的方法。

&arr是指向int[6]的指针

(&arr + 1)是指向一个int[6]的指针,该指针在arr中的第一个之后开始,即它在内存中高出6int

*(&arr + 1)arr之后虚构的数组。那里没有数组,但我们不会使用它,所以这并不重要。

*(&arr + 1) - arr中,在应用差运算之前,两个整数数组被转换为指向其第一个元素的int *指针。由于这些数组在内存中相隔6个int,因此这两个指针之间有6个int,结果是6。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61515010

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档