4.2 指针与++,--,* 的结合
*,++,-- 符号按右结合运算。
所以 *p++ == *(p++)
*++p == *(++p)
例子:
1 #include <stdio.h>
2
3 int init_a(int *a)
4 {
5 a[0] = 1;
6 a[1] = 4;
7 a[2] = 8;
8 }
9
10 void main()
11 {
12 int a[3];
13 int *p;
14
15 init_a(a);
16 p = &a[0];
17 printf("*p++ = %d , ",*p++);
18 printf("*p = %d\n",*p);
19
20 init_a(a);
21 p = &a[0];
22 printf("*(p++) = %d , ",*(p++));
23 printf("*p = %d\n",*p);
24
25 init_a(a);
26 p = &a[0];
27 printf("(*p)++ = %d , ",(*p)++);
28 printf("*p = %d\n",*p);
29
30 init_a(a);
31 p = &a[0];
32 printf("*++p = %d , ",*++p);
33 printf("*p = %d\n",*p);
34
35 init_a(a);
36 p = &a[0];
37 printf("*(++p) = %d , ",*(++p));
38 printf("*p = %d\n",*p);
39
40 init_a(a);
41 p = &a[0];
42 printf("++(*p) = %d , ",++(*p));
43 printf("*p = %d\n",*p);
44 }
45 --------------------------------------------
46 运行:
47 *p++ = 1 , *p = 4
48 *(p++) = 1 , *p = 4
49 (*p)++ = 1 , *p = 2
50 *++p = 4 , *p = 4
51 *(++p) = 4 , *p = 4
52 ++(*p) = 2 , *p = 2