gpt4 book ai didi

c++ - 为什么指针在 C++ 中表现得像这样

转载 作者:太空狗 更新时间:2023-10-29 23:39:52 25 4
gpt4 key购买 nike

<分区>

我在竞赛试卷中找到了这个程序:

#include <iostream>
void main()
{
int a[5] = { 1, 2, 3, 4, 5 };
int *ptr = (int*)(&a + 1);
printf("%d %d ",*(a + 1), *(ptr - 1));
}

输出是2 5

现在,当我将第 5 行更改为 int *ptr=(int*)(&a); 时和 printf("%d %d ",*(a + 1), *(ptr));

输出变为2 1

在第一种情况下 ptr得到了 array+1 的最后一个地址在第二种情况下 ptr得到相同的数组地址(a 的地址)。

我的疑问是,当 a 递增并分配给 ptr 时,为什么此分配会显示不同类型的行为?什么时候a分配给 ptr不递增?

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