gpt4 book ai didi

c++ - 解释以下 C++ 程序的输出

转载 作者:行者123 更新时间:2023-11-30 21:44:53 25 4
gpt4 key购买 nike

帮助我理解代码解释一下数组 *p[] 中的内容。数组不应该是A的所有元素的地址吗?解释 printf 语句的输出。

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

输出:

1 1 1 
2 2 2
3 3 3
3 4 4

最佳答案

你有一个 int 数组、int * 数组和 int **。

现在,检查ptr - p正在检查ptr点和p点之间的差异(之间有多少int block )。 *ptr-a 检查 *ptr(本身就是一个指针)和 a 指向的地址之间的差异,最后 **ptr 检查 a 的值数组位于 *p 指向的位置。

由于您像这样移动指针:*++ptr, *ptr++, ptr++ 那么指针指向更远的位置,因此输出会增长。

最后一个增量++*ptr适用于p的值,而不是ptr的值,因此ptr - p 保持不变

关于c++ - 解释以下 C++ 程序的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32509692/

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