【发布时间】:2011-05-05 11:28:21
【问题描述】:
我一直在尝试理解这个程序的输出:
#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;
}
1 1 1
2 2 2
3 3 3
3 4 4
谁能解释一下输出?
【问题讨论】:
-
在什么情况下你会“遇到”这样的事情?对我来说,这似乎是做作的、烦人的,而且毫无意义。
-
@unwind:我同意,这似乎也是
contrived, annoying, and horribly pointless,但这是从我的试卷中复制的。