gpt4 book ai didi

c++ - 指针算术题(数组大小)[C++]

转载 作者:行者123 更新时间:2023-12-02 10:17:17 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





How does *(&arr + 1) - arr give the length in elements of array arr?

(3 个回答)


去年关闭。



#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;准确地找到数组的大小?我已经阅读了 geeksforgeeks 的解释,但仍然有点困惑。我想如果你取消引用 (&arr + 1) 那么它会给你一个不存在的值,因为你跳过了 6 个整数,这在那个内存地址中可以是任何随机的?而且,如果您能够将 (&arr + 1) 取消引用为 int 类型,那么您如何从 arr 中减去该值? ?

最佳答案

*(&arr + 1) - arr是一种相当复杂的书写方式 6 .
&arr是指向 int[6] 的指针
(&arr + 1)是指向 int[6] 的指针在 arr 之后开始,即它是 6 int内存更高。
*(&arr + 1)arr 之后的虚数组.那里没有数组,但我们不会使用它,所以没关系。

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

关于c++ - 指针算术题(数组大小)[C++],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61515010/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com