gpt4 book ai didi

c - 输出说明 : A complicated pointer arithmetic

转载 作者:太空宇宙 更新时间:2023-11-04 00:33:00 26 4
gpt4 key购买 nike

我一直在努力理解这个程序的输出:

#include <stdio.h>    
int main(){
static int arr[] = {0, 1, 2, 3, 4};
int *p[] = {arr, arr+1, arr+2, arr+3, arr+4};
int **ptr = p;

ptr++;
printf("%d %d %d\n", ptr-p, *ptr-arr, **ptr);
*ptr++;
printf("%d %d %d\n", ptr-p, *ptr-arr, **ptr);
*++ptr;
printf("%d %d %d\n", ptr-p, *ptr-arr, **ptr);
++*ptr;
printf("%d %d %d\n", ptr-p, *ptr-arr, **ptr);

return 0;
}

OUTPUT

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

谁能解释一下输出结果?

最佳答案

This is the initial snapshot

在第一个 ptr++ 之后,它将是: enter image description here因此,printf("%d %d %d\n",ptr-p,*ptr-arr,**ptr); 将给出:1 1 1

在 *ptr++ 之后它将是:enter image description here因此,printf("%d %d %d\n",ptr-p,*ptr-arr,**ptr); 将给出:2 2 2

在 *++ptr 之后,它将是:

enter image description here

因此,printf("%d %d %d\n",ptr-p,*ptr-arr,**ptr); 将给出:3 3 3

在++*ptr之后,它将是:

enter image description here

因此,printf("%d %d %d\n",ptr-p,*ptr-arr,**ptr); 将给出:3 4 4

希望对您有所帮助。

关于c - 输出说明 : A complicated pointer arithmetic,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5896940/

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