gpt4 book ai didi

c - 在 C 中使用指针

转载 作者:太空狗 更新时间:2023-10-29 17:00:47 25 4
gpt4 key购买 nike

#include <stdio.h>

int main(void)
{
int a[5]={1,2,3,4,5};
int *ptr=(int*)(&a+1);
printf("%d %d\n",*(a+1),*(ptr-1));
return 0;
}

输出:

2,5

我无法理解 *(ptr-1) 是如何评估为 5(正确输出)的。但是当我手动是 1 吗?我的理解是 *(ptr-1) 将被评估为 *(&a+1-1) 这将是*(&a) 为 1。

请帮助我理解这个概念。

最佳答案

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

使 &a + 1 使 &a + sizeof (a) 因为 aint [5] 这使得 ptr 实际指向 a[5](无效/超出定义的限制)

(ptr - 1) 指向 a[4] 并且 *(ptr - 1) 将打印 5

关于c - 在 C 中使用指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7194388/

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