小编new*_*bie的帖子

为什么值不同?C ++指针

我正在寻找一种解决方案,以找出C ++中数组的长度。我发现的解决方案之一是

int arr[] = {1,2,3,4,5,6};
int size = *(&arr+1)-arr; //size is the length of the array
Run Code Online (Sandbox Code Playgroud)

我之间感到困惑&arrarr因为两者都给出了数组的基地址。再次进行Google搜索,发现&arr + 1给出了不属于数组一部分的下一个内存块arr + 1的地址,其中给出了数组中下一个元素的地址。

我编写了以下代码来测试&arr和之间的区别arr

int arr[] = {1,2,3,4,5,6};
printf("value of &arr + 1 - &arr = %d\n", &arr + 1 - &arr);
printf("value of *(&arr + 1) - arr = %d\n", *(&arr + 1) - arr);
Run Code Online (Sandbox Code Playgroud)

在回答第一个printf1在那里作为第二printf给出6。这是混淆了我的部分:由于这两种&arrarr持有相同阵列的基址,为何结果不同?

c++ arrays pointers

4
推荐指数
1
解决办法
81
查看次数

标签 统计

arrays ×1

c++ ×1

pointers ×1