我一直在努力理解这个程序的输出:
#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
谁能解释一下输出结果?
在第一个 ptr++ 之后,它将是: 因此,printf("%d %d %d\n",ptr-p,*ptr-arr,**ptr);
将给出:1 1 1
在 *ptr++ 之后它将是:因此,printf("%d %d %d\n",ptr-p,*ptr-arr,**ptr);
将给出:2 2 2
在 *++ptr 之后,它将是:
因此,printf("%d %d %d\n",ptr-p,*ptr-arr,**ptr);
将给出:3 3 3
在++*ptr之后,它将是:
因此,printf("%d %d %d\n",ptr-p,*ptr-arr,**ptr);
将给出:3 4 4
希望对您有所帮助。
我是一名优秀的程序员,十分优秀!