#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'
?