#include <stdio.h>
int main() {
char u[] = "UVWXYZ";
char v[] = "xyz";
struct T {
int x;
char c;
char *t;
} a[] = {{11, 'A', u}, {100, 'B', v}}, *p = a;
p = a;
printf("*(++p)->t = %c\n", *(++p)->t);
p = a;
printf("*++p->t = %c\n", *++p->t);
p = a;
printf("++*p->t = %c\n", ++*p->t);
}
结果是:
*(++p)->t = x
*++p->t = V
++*p->t = W
好吧,我认为 *(++p) 和 *++p 是相同的,因为指针将首先递增。但为什么 *(++p)->t 和 *++p->t 结果不同呢?
另外,我认为 ++*p 表示指针指向 u[0],即“U”,然后“U”将递增。所以我认为结果应该是“V”?