gpt4 book ai didi

c++ - 指向指针的指针如何能够引用数组

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:27:04 25 4
gpt4 key购买 nike

#include<cstdio>
int main() {

int a[5] = {1,2,3,4,5};

int *ptr = (int*)(&a+1);

printf("%d %d" ,*(a+1),*(ptr-1));
}

这里 a+1 的地址位置被类型转换为指向 ptr;

我试过ptr = (int)&a 它指向数组..由于指针地址存储在某个位置指针 ptr 指向该位置如何使用 *ptr

引用数组元素的位置

程序的输出是 2 5你能解释一下 5 是如何输出的吗

最佳答案

a是 5 个整数的数组,&a是一个指向 5 个整数数组的指针。因为指针算法对指针类型大小的倍数进行运算,&a+1是指向 5 个整数的虚构数组的指针,紧跟在 a 中存储的整数之后.当您将其转换为指向 int 的指针并存储在 ptr 中时你得到一个指向该数组中第一个 int 的指针。

换句话说,

int *ptr = (int*)(&a+1);

相当于

int *ptr = (a + 5);

这使得 *(ptr-1)*(a+4)相同,与 a[4] 相同, a 的最后一个元素.

关于c++ - 指向指针的指针如何能够引用数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17660299/

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