我一直在努力了解这个程序的输出:
#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;
}
Run Code Online (Sandbox Code Playgroud)
1 1 1
2 2 2
3 3 3
3 4 4
Run Code Online (Sandbox Code Playgroud)
有人可以解释输出吗?
小智 8

在第一次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
希望能帮助到你.
| 归档时间: |
|
| 查看次数: |
2073 次 |
| 最近记录: |